我从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说这是“不推荐用于一般用途”。为什么不呢?
答案 0 :(得分:7)
“活动”在“最近的应用”中显示为Chrome的原因是因为它现在属于Chrome任务,因为它是从那里启动的。
正如您注意到android:launchMode="singleInstance"
解决了您的问题,但不建议或不鼓励这样做,因为它会扼杀用户体验和导航以及用户对应用程序的行为方式。
幸运的是,我认为有一种方法可以在HREF
中指定Intent标志,尝试这样的事情:
<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
中的。此标志通常由想要呈现“启动器”样式行为的活动使用:它们为用户提供可以完成的单独事物的列表,否则完全独立于启动它们的活动。