从Chrome内启动自定义网址计划的Android应用?

时间:2013-07-18 23:31:01

标签: android

我从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说这是“不推荐用于一般用途”。为什么不呢?

1 个答案:

答案 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中的

。此标志通常由想要呈现“启动器”样式行为的活动使用:它们为用户提供可以完成的单独事物的列表,否则完全独立于启动它们的活动。