1

我希望我的应用程序在用户单击链接时启动,例如,http://myapp.com该链接嵌入在 SMS 消息中。

我遵循了这个[解决方案],但它对我不起作用。模拟器每次都打开浏览器。

这是意图过滤器:

<intent-filter>    
    <action android:name="android.intent.action.VIEW" />    
    <category android:name="android.intent.catagory.DEFAULT"/> 
    <category android:name="android.intent.catagory.BROWSABLE"/>    
    <data android:host="myapp.com" android:scheme="http" />
</intent-filter>

我还尝试增加意图过滤器的优先级,以便在浏览器使用android:priority = 100标签之前拦截意图,但它没有改变任何东西。所以要么这个优先级不够高,要么意图过滤器从一开始就没有匹配。

这是点击链接后系统广播的意图。它给出了:

04-27 13:03:22.905: INFO/ActivityManager(59): Starting activity: Intent { act=android.intent.action.VIEW dat=http://myapp.com cmp=com.android.browser/.BrowserActivity}

我的猜测是,每次发送此意图时,Android 都会选择默认浏览器。我想知道是否与 cmp 属性有关。我们可以改变它吗?不然怎么能在浏览器之前拦截到intent呢?

任何建议都会受到欢迎。先感谢您 :)

4

2 回答 2

1

我更新了模拟器工具(实际上我删除/重新安装了 SDK)并使用完全相同的代码重建了应用程序。现在它适用于 2.1 以上的所有版本!当用户点击短信中的链接时,会弹出一个窗口并建议浏览器和我的应用程序。

这次的广播意图也不同:

04-29 12:42:22.906: INFO/ActivityManager(63): Starting activity: Intent { act=android.intent.action.VIEW dat=http://www.my.com flg=0x80000 cmp=android/com.android.internal.app.ResolverActivity(has extras) }

组件属性发生了变化!所以我真的认为这与模拟器的版本有关。

于 2011-04-29T13:05:28.810 回答
0

您的 android:scheme 不应该链接到您的应用程序而不是 http 吗?

<data android:scheme="myapp"/> 

查看这些 Stackoverflow 问题以获取更多信息(我认为您的意思是在您说“[解决方案]”的问题中链接到其中一个):
如何注册一些 URL 命名空间(myapp://app.start/)通过在 Android OS 中的浏览器中调用 URL 来访问您的程序?
如何在 Android 上实现我自己的 URI 方案

您是否尝试过按照其中一个答案中的描述调用setPackage 方法?

更新:我认为您可以通过使用两种方案来实现这一点,也许是这样的:

<data android:scheme="myapp" android:host="launch" android:pathPrefix="/" />
<data android:scheme="http" android:host="myapp" android:pathPrefix="/launch/" />
于 2011-04-28T14:53:29.313 回答