1

我有这段代码(如下),它启动官方 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;              
                }
        }
}
4

0 回答 0