У меня проблема с двумя кнопками в разрабатываемом приложении запуска.Первая кнопка должна запустить встроенный текстовый редактор 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?