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

JW.*_*JW. 2 android

我从Eclipse向导创建了一个基本的Android应用程序.然后我在AndroidManifest.xml之后添加了以下intent过滤器.这使它支持自定义的"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>
Run Code Online (Sandbox Code Playgroud)

如果我运行Chrome或默认浏览器,然后点击"sample://"链接,则会启动我的应用.但是,如果我查看任务切换器,我的应用程序未列出.而是显示Chrome,我的应用程序的屏幕截图.

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

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

Die*_*ano 7

您的"活动"在"最近的应用"中显示为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" />
Run Code Online (Sandbox Code Playgroud)

在前面的例子中launchFlags=FLAG_ACTIVITY_NEW_TASK.此标志通常由想要呈现"启动器"样式行为的活动使用:它们为用户提供可以完成的单独事物的列表,否则完全独立于启动它们的活动.