我从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"添加到活动中,它将在单独的应用程序中打开。但是docs说这是“不推荐用于一般用途”。为什么不呢?

最佳答案

你的活动之所以在最近的应用程序中显示为chrome,是因为它现在属于chrome任务,因为它是从那里启动的。
正如您所注意到的,android:launchMode="singleInstance"解决了您的问题,但是不建议或不鼓励这样做,因为它会影响用户体验和导航以及用户对您的应用程序的期望。
幸运的是,我认为有一种方法可以在HREF中指定意图标志,请尝试以下操作:

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

在前面的例子中。此标志通常由希望呈现“启动程序”样式行为的活动使用:它们为用户提供一个可以执行的单独操作的列表,否则这些操作将完全独立于启动它们的活动运行。

07-24 09:49
查看更多