例如,当我从应用程序中打开F acebook Login page
时,屏幕(activity
)被加载到同一Task stack
中。
以同样的方式,我想从我的应用程序打开另一个应用程序的活动,加载到同一个任务堆栈中,而不是启动新任务。
通常,当我们访问其他应用程序时,我们使用" FLAG_ACTIVITY_NEW_TASK
",这会创建新任务。
但是如何在同一个任务中加载其他应用程序的活动?
目标新应用程序不是内置的Intent activities
(如email, contact, call
等)
我正在尝试从一个应用程序中打开另一个应用程序的活动。
更新
我想我不能说清楚。我在设备中安装了应用程序A和应用程序B,这两个应用程序都由我制作,而不是系统构建的。现在我想从应用程序A的活动访问应用程序B的main_activity,并且仍然保留在同一个任务中。感谢
答案 0 :(得分:3)
但是如何在同一个任务中加载其他应用程序的活动?
首先,不要使用FLAG_ACTIVITY_NEW_TASK
。这表示你不想要新任务。
其次,确保您开始的活动没有taskAffinity
或launchMode
会干扰此活动。
因此,例如,startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
将在您的任务中启动日期和时间设置屏幕。大多数设置屏幕都有taskAffinity
,这仍然会在单独的任务中结束。
答案 1 :(得分:0)
用于inbulit邮件应用程序:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL , new String[]{"test@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT , "Content");
try {
startActivity(Intent.createChooser(intent, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MyActivity.this, "No email clients installed.", Toast.LENGTH_SHORT).show();
}