package net.miz_hi.smileessence.core; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import net.miz_hi.smileessence.command.status.impl.StatusCommandChaseTalk; import net.miz_hi.smileessence.command.user.UserCommandOpenInfo; import net.miz_hi.smileessence.model.status.tweet.TweetModel; import net.miz_hi.smileessence.status.TweetUtils; import net.miz_hi.smileessence.system.PostSystem; import net.miz_hi.smileessence.util.LogHelper; import net.miz_hi.smileessence.view.activity.MainActivity; public class IntentRouter { public static void onNewIntent(Intent intent) { LogHelper.d("/intent"); Uri uri = intent.getData(); if (uri != null) { LogHelper.d(uri.toString()); if (isOrderToPost(uri)) { String text = ""; String url = ""; if (uri.getQueryParameter("text") != null) { text = uri.getQueryParameter("text").replaceAll("\\+", " "); } else if (uri.getQueryParameter("status") != null) { text = uri.getQueryParameter("status").replaceAll("\\+", " "); } if (uri.getQueryParameter("url") != null) { url = uri.getQueryParameter("url"); } String str = text + " " + url; PostSystem.setText(str); PostSystem.openPostPage(); } else if (isStatusUrl(uri)) { TweetModel status = TweetUtils.getOrCreateStatusModel(getStatusId(uri.toString())); new StatusCommandChaseTalk(MainActivity.getInstance(), status).run(); } else if (isUserUrl(uri)) { String screenName; if (uri.getQueryParameter("screen_name") != null) { screenName = uri.getQueryParameter("screen_name"); } else { String[] arrayOfString = uri.toString().split("/"); screenName = arrayOfString[arrayOfString.length - 1]; } new UserCommandOpenInfo(screenName, MainActivity.getInstance()).run(); } } else if (intent.getAction() != null && intent.getAction().equals(Intent.ACTION_SEND)) { Bundle extra = intent.getExtras(); if (extra != null) { StringBuilder builder = new StringBuilder(); if (!TextUtils.isEmpty(extra.getCharSequence(Intent.EXTRA_SUBJECT))) { builder.append(extra.getCharSequence(Intent.EXTRA_SUBJECT)).append(" "); } builder.append(extra.getCharSequence(Intent.EXTRA_TEXT)); PostSystem.setText(builder.toString()); PostSystem.openPostPage(); } } } public static boolean isOrderToPost(Uri uri) { if (uri.getHost().equals("twitter.com")) { if (uri.getPath().equals("/share")) { return true; } else { String[] arr = uri.toString().split("/"); for (String s : arr) { if (s.startsWith("tweet") || s.startsWith("home")) { return true; } } } } return false; } public static boolean isStatusUrl(Uri uri) { if (uri.getHost().equals("twitter.com")) { String[] arr = uri.toString().split("/"); for (String s : arr) { if (s.equals("status") || s.equals("statuses")) { return true; } } } return false; } public static boolean isUserUrl(Uri uri) { if (uri.getHost().equals("twitter.com")) { if (uri.getQueryParameter("screen_name") != null) { return true; } String[] arrayOfString = uri.toString().split("/"); if (arrayOfString.length == 4 && uri.getQuery() == null) { return true; } else if (arrayOfString.length > 4) { if (arrayOfString[3].equals("#!") && uri.getQuery() == null) { return true; } } } return false; } public static Long getStatusId(String paramUri) { String str = "0"; String[] arrayOfString = paramUri.split("/"); for (int i = 0; i < arrayOfString.length; i++) { if (arrayOfString[i].startsWith("status")) { str = arrayOfString[(i + 1)]; break; } } return Long.parseLong(str); } }