Как заставить 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);
    }
});

... но это сработало неожиданным образом:

  1. Первая кнопка открывает текстовый редактор, как и ожидалось.
  2. Затем нажатие кнопки "Домой" показывает запуск, как и ожидалось.
  3. Затем вторая кнопка открывает TotalCommander, как и ожидалось.
  4. Теперь при нажатии кнопки "Назад" отображается текстовый редактор, вместо того, чтобы показывать панель запуска.

... чтобы быть более конкретным: я хочу, чтобы кнопки использовали отдельные задачи, чтобы при переходе назад из текстового редактора или 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?

0 ответов

Другие вопросы по тегам