捕捉市场搜索意图?

yan*_*nko 6 android android-intent

我正试图捕捉Android Market搜索意图.

这就是您启动Android Market并按包名搜索应用的方式:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.google.somepackage")));
Run Code Online (Sandbox Code Playgroud)

现在,这是我的一个活动的intent过滤器:

<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>
Run Code Online (Sandbox Code Playgroud)

我希望Android能问我哪个应用应该处理不会发生的意图.
然而,如果我更换marketmarket1searchsearch1,在这两个地方,我的活动被推出.
是否存在"不可触及"意图或某种意图?

TIA.

Chr*_*Orr 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>
Run Code Online (Sandbox Code Playgroud)

但是,我尝试将此添加到我的应用程序中,除了我增加了优先级值(不是我之前看到过有任何影响),但仍然无法捕获Intent.

希望有人(或AOSP)可以对情况有所了解......

  • 通过设置这样的优先级,没有第三方应用程序可以拦截意图.只有系统分区中安装的应用程序才能被授予优先级> 0. (13认同)
  • 只是为此添加更多数据.似乎系统分区*上的apps*not*可以*定义优先级大于0的`<receiver>`.这会导致在系统应用程序之前订购和接收广播.请注意,我没有尝试使用问题中提到的`<activity>`. (3认同)
  • @hackbod会很好,如果可以添加到文档http://developer.android.com/guide/topics/manifest/intent-filter-element.html#priority (2认同)