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