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

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

问题描述:

如何处理任务:打开任务管理器以查看。在同一任务中启动外部活动

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

我的应用程序可以在同一个任务中启动一个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浏览器的意图,其 活动不会与您的应用程序处于同一任务中。相反, 要么为浏览器启动新任务,要么,如果浏览器已经有 任务在后台运行,那么该任务会提前处理 新的意图。

从官方文档。