在同一任务中启动外部活动

时间:2014-10-30 16:32:36

标签: android android-intent android-activity external

我如何看待任务:打开任务管理器以查看。

我一直认为,从很久以前开始在当前任务中开展外部活动是不可能的。但我发现这是不正确的!

我的应用程序可以在同一任务中启动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;
}

1 个答案:

答案 0 :(得分:2)

总结一下:正在启动的外部活动是否可以在同一个任务中取决于它自己的声明。

  

另一个例子,Android Browser应用程序声明了   Web浏览器活动应始终在其自己的任务中打开 - 通过指定   元素中的singleTask启动模式。这意味着   如果您的应用程序发出打开Android浏览器的意图,那么   活动未与您的应用程序放在同一任务中。代替,   要么为浏览器启动新任务,要么已经启动浏览器   有一个在后台运行的任务,该任务被提前   处理新意图。

来自官方文件。