Как заставить FLAG_ACTIVITY_NEW_TASK игнорировать taskAffinity?
У меня проблема с двумя кнопками в приложении запуска, которое я разрабатываю. Первая кнопка должна запустить встроенный текстовый редактор TotalCommander для отображения определенного текстового файла. Вторая кнопка должна запустить TotalCommander. Итак, я начал с кода ниже...
ImageButton button1 = (ImageButton) findViewById(R.id.imageButton1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file:///storage/emulated/0/myNotes.txt"), "text/plain");
startActivity(intent);
}
});
ImageButton button2 = (ImageButton) findViewById(R.id.imageButton2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= getPackageManager().getLaunchIntentForPackage("com.ghisler.android.TotalCommander");
startActivity(intent);
}
});
... но это сработало неожиданным образом:
- Первая кнопка открывает текстовый редактор, как и ожидалось.
- Затем нажатие кнопки "Домой" показывает запуск, как и ожидалось.
- Затем вторая кнопка открывает TotalCommander, как и ожидалось.
- Теперь при нажатии кнопки "Назад" отображается текстовый редактор, вместо того, чтобы показывать панель запуска.
... чтобы быть более конкретным: я хочу, чтобы кнопки использовали отдельные задачи, чтобы при переходе назад из текстового редактора или TotalCommander отображался модуль запуска. (За исключением случаев, когда текстовый редактор был открыт из TotalCommander, в этом случае TotalCommander должен запустить новый экземпляр действия текстового редактора в своей собственной задаче.)
Итак, я добавил intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
на обе кнопки...
ImageButton button1 = (ImageButton) findViewById(R.id.imageButton1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file:///storage/emulated/0/myNotes.txt"), "text/plain");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
ImageButton button2 = (ImageButton) findViewById(R.id.imageButton2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= getPackageManager().getLaunchIntentForPackage("com.ghisler.android.TotalCommander");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
... но это приводит к тому же поведению. Я предполагаю FLAG_ACTIVITY_NEW_TASK
Они игнорируются из-за схожести задач активаций TotalCommander. Как я могу заставить FLAG_ACTIVITY_NEW_TASK игнорировать taskAffinity или изменить taskAffinity соответствующих действий TotalCommander?