我正试图抓住Android Market搜索意图。
这就是您启动Android电子市场并按包名称搜索应用的方式:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.google.somepackage")));
现在,这是我的一项活动的意图过滤器:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="market" android:host="search" />
</intent-filter>
我希望Android能问我哪个应用应该处理不会发生的意图
但是,如果我将market
替换为market1
或search
替换为search1
,则会在两个位置启动我的活动。
是否存在“不可触及”的意图或什么?
TIA。
答案 0 :(得分:9)
这确实很奇怪,有点违背整个开放意图系统。我知道有广播只有系统可以创建,但我没有听说过这样的意图解析。
无论如何,我只是将市场APK转移到我的HTC Hero上并检查清单。通过添加路径,它们在URI匹配方面稍微具体一些:
<intent-filter android:priority="100">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="market.android.com" android:path="/search" />
<data android:scheme="market"
android:host="search" android:path="" />
</intent-filter>
但是,我尝试将其添加到我的应用中,但我增加了优先级值(not that I've seen that have any effect before),但仍无法捕获Intent
。
希望某人(或AOSP)可以了解情况......