私のアプリケーションは、自分のアプリケーションのマーケットリンクに応答させたいと考えています。リンクはmarket:// details?id = my.package.nameです。私がこれをしたい理由は、アプリケーションがインストールされていればそれを開き、アプリケーションがインストールされていなければマーケットページを開くリンクを送ることができるからです。私が実行している問題は、アプリケーションが私のアプリケーションリンクだけでなく、すべての市場リンクに応答することです。その理由は、パッケージ名がUriのクエリ部分で定義されているためです。 Uriのクエリ部分に基づいてインテントをフィルタリングする方法はありますか?クエリに基づいてインテントフィルタを作成できますか?
9
A
答えて
6
いいえ、申し訳ありません。 ?
の左側のすべてに基づいてフィルタを制約することはできますが、それだけです。
6
Android API 19からは、ssp
,sspPrefix
またはsspPattern
を使用して、これを行うことができます。例:このようなフィルタで
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:sspPrefix="//play.google.com/store/apps/details?id=com.example.test"
/>
</intent-filter>
、OSのみid=com.example.test
パラメータを使用してURLのあなたのアプリを提供し、そのようなパラメータが存在しない場合にそれを提供しません。しかしこれはAndroid 4.4以降でのみ動作し、古いバージョンはsspPrefix
を無視します。
この記事も参照してください。https://chris.orr.me.uk/android-ssp-data-intent-filter/
+0
この方法は、Android 4.4以降を実行する端末であっても信頼性がありません。https://stackoverflow.com/questions/46708662/android-sspprefix-is-ignored – CalumMcCall
答えをありがとう。なぜ私はこれを動作させることができなかったのかを説明します。それはドキュメントではっきりと呼び出されていません。 – charlest