Запуск Twitter на Android не всегда новый твит - PullRequest
1 голос
/ 29 февраля 2012

У меня есть этот код (ниже), который запускает официальное приложение 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;              
                }
        }
}
...