如何使FLAG_ACTIVITY_NEW_TASK忽略taskAffinity?

时间:2019-02-02 07:25:29

标签: android android-intent flags android-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中activites的任务亲和力的忽略。如何使FLAG_ACTIVITY_NEW_TASK忽略taskAffinity,或修改相关TotalCommander活动的taskAffinity?

0 个答案:

没有答案