在同一任务中启动外部活动
问题描述:
如何处理任务:打开任务管理器以查看。在同一任务中启动外部活动
我一直在想,自从很久以前就不可能在当前的任务中开始外部活动。但我发现这是不正确的!
我的应用程序可以在同一个任务中启动一个twitter/facebook/sms(当点击任务管理器按钮时,我只能看到我的任务)。但是这不适用于浏览器。我已经尝试过两种浏览器应用程序Chrome和Firefox。没有一个像twitter/facebook/sms一样工作
以下是打开Facebook客户端和浏览器的代码。任何意见将非常感激!
public Intent shareViaFacebook(Activity ctx) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
ActivityInfo appInfo = searchForApp(ctx, intent, "facebook");
if (appInfo == null)
return null;
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(new ComponentName(appInfo.packageName, appInfo.name));
intent.putExtra(Intent.EXTRA_TEXT, "message");
return intent;
}
public Intent launchBrowser(Activity ctx, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
ActivityInfo appInfo = searchForApp(ctx, intent, null);
if (appInfo == null)
return null;
intent.setComponent(new ComponentName(appInfo.packageName, appInfo.name));
intent.addCategory(Intent.CATEGORY_LAUNCHER);
return intent;
}
答
总结:启动的外部活动是否可以在同一个任务中取决于它自己的声明。
再举一个例子,Android的浏览器应用程序声明, Web浏览器的活动应在其自己的任务,通过指定 元素中的singleTask启动模式始终打开。这意味着 如果您的应用程序发出打开Android浏览器的意图,其 活动不会与您的应用程序处于同一任务中。相反, 要么为浏览器启动新任务,要么,如果浏览器已经有 任务在后台运行,那么该任务会提前处理 新的意图。
从官方文档。