我有这个代码(下面)启动官方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;
}
}
}