我正在开发的启动器应用程序中的两个按钮有问题。第一个按钮应启动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中在自己的任务中推出的一个新的实例。)
所以我在两个按钮中都添加了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?