2

我从 Eclipse 向导创建了一个基本的 Android 应用程序。然后,在现有的之后,我将以下意图过滤器添加到AndroidManifest.xml 。这使它支持自定义的“sample://” URL 方案:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="sample" />
</intent-filter>

如果我运行 Chrome 或默认浏览器,然后单击“sample://”链接,它会启动我的应用程序。但是,如果我查看任务切换器,我的应用程序并未列出。取而代之的是,Chrome 和我的应用程序的屏幕截图一起显示。

为什么是这样?可以修复吗?我在 Galaxy Nexus 手机上运行 Android 4.2.2。

我注意到,如果我添加android:launchMode="singleInstance"到活动中,它会在单独的应用程序中打开。但是文档说这是“不推荐用于一般用途”。为什么不?

4

1 回答 1

7

您的 Activity 在最近的应用程序中显示为 Chrome 的原因是它现在属于 Chrome 任务,因为它是从那里启动的。

正如您所注意到android:launchMode="singleInstance"的,它可以解决您的问题,但是不建议或不鼓励这样做,因为它会破坏用户体验和导航以及用户期望您的应用程序的行为方式。

幸运的是,我认为有一种方法可以在您的 中指定 Intent 标志,请HREF尝试以下操作:

<A HREF="intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.example.package/.MyActivity;end" />

在前面的例子launchFlags=FLAG_ACTIVITY_NEW_TASK中。该标志通常由想要呈现“启动器”样式行为的活动使用:它们为用户提供可以完成的单独事情的列表,否则这些事情会完全独立于启动它们的活动运行。

于 2013-07-19T00:15:27.360 回答