6

Androidマーケットの検索インテントをキャッチしようとしています。

これが、Androidマーケットを起動し、パッケージ名でアプリを検索する方法です。

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

これが私のアクティビティの1つのインテントフィルターです。

<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と、アクティビティが開始されます。 「触れられない」意図か何かの概念はありますか?market1searchsearch1

TIA。

4

1 に答える 1

9

それは確かに奇妙なことであり、オープンインテントシステム全体に少し反します。システムだけが作成できる放送があることは知っていますが、意図的な解決のためにそのようなことは聞いたことがありませんでした。

とにかく、HTCHeroにMarketAPKをダンプして、マニフェストを確認しました。パスを追加することで、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 に答える