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