1

我正在开发的启动器应用程序中的两个按钮有问题。第一个按钮应该启动 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 活动的任务相关性,我假设s 被忽略。如何让 FLAG_ACTIVITY_NEW_TASK 忽略 taskAffinity,或修改相关 TotalCommander 活动的 taskAffinity?

4

0 回答 0