我有这段代码(如下),它启动官方 Twitter 应用程序(前提是用户安装了该应用程序)并直接转到包含一些预定义文本的新推文。
当 twitter 应用程序之前没有启动或使用硬后退按钮退出时,这可以正常工作,但是有一些随机(因为没有更好的词)行为,这似乎取决于官方 twitter 中的用户活动应用程序。如果用户一直在查看 twitter 应用程序上的各种选项卡,然后通过按下主页按钮并启动或使用长按方法更改为我的应用程序,我的意图只是启动到他们正在查看的最后一个 twitter 屏幕并且不会不要总是发布新的推文。
有什么办法可以避免这种情况,或者我的代码是否天生就是为这种行为设置的,我将如何改变它?
public void launchTwitter() {
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Some text");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, getString(R.string.twittertext));
final PackageManager pm = this.getPackageManager();
final List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
int count = 0;
for (final ResolveInfo app : activityList) {
count++;
if (app.activityInfo.name.equals("com.twitter.android.PostActivity")) {//"com.twitter.android.PostActivity".equals(app.activityInfo.name)) {
final ActivityInfo activity = app.activityInfo;
final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
shareIntent.setComponent(name);
startActivity(shareIntent);
break;
}
else if(count == activityList.size()) {
Toast.makeText(Home.this, "No suitable Twitter apps found.",
Toast.LENGTH_SHORT) .show();
break;
}
}
}