6

我正在尝试捕捉 Android Market 搜索意图。

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

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 会问我哪个应用程序应该处理没有发生的意图。
但是,如果我在两个地方都marketmarket1search替换search1,我的活动就会启动。
是否有“不可触碰”的意图或其他概念?

TIA。

4

1 回答 1

9

这确实很奇怪,而且有点违背整个开放意图系统。我知道有些广播只有系统才能创建,但我没有听说过这样的意图解析。

无论如何,我只是在我的 HTC Hero 上转储了 Market APK 并检查了清单。通过添加路径,它们的 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>

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

希望有人(或 AOSP)能对这种情况有所了解......

于 2010-01-07T22:40:37.067 回答