とセットIntentFilter
のスキームでを使用するコード例はたくさんあります。Android でのブラウザー POST の結果である MIME タイプの処理、 Androidでの XML (具体的には rss) をブラウズするためのインテント フィルター、およびrss リンクがブラウザーで開かれているときに Android アプリを開く方法への回答を参照してください。"http"
mimeType
私が持っている特定の使用例は、最後の 2 つの質問のような RSS リンクですが、私がインターセプトしたい RSS フィードには、 で有効に照合できるパスpathPattern
がなく、それを制御することはできません。Google Reader APK から最初に抽出されたものと同じインテント フィルターを使用してみました。
<intent-filter android:label="@string/NewURL_intent_rss">
<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"/>
<data android:host="*" />
<data android:mimeType="text/xml"/>
<data android:mimeType="application/rss+xml" />
<data android:mimeType="application/atom+xml"/>
<data android:mimeType="application/xml"/>
</intent-filter>
しかし、Chrome でそのようなファイルを指すリンクをクリックしてこれをテストすると、Chrome はそのファイルを参照するだけです。Google リーダーをインストールしましたが、それも意図に反応しません。mimeType
行をpathPattern
テスト URL に一致するaに置き換えると、アプリはインテントを受け取ります。サーバーに HEAD リクエストを送信することで、URL の Content-Type が「application/xml」として送信されていることを確認しました。テスト デバイスは、ストック ROM 上の Nexus 10 です。
フィルターを復元し、シェルmimeType
から URL を起動して、別のテストを行いました。am start
このコマンドは、URL のみを指定して、
am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d http://my.test/url
ブラウザを立ち上げたのですが、このコマンドで型を明示的に指定すると、
am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -t application/xml -d http://my.test/url
アプリと Google リーダーのインテント セレクターが表示されました。これは、フィルターが有効になっていることを確認しているようですが、Chrome はタイプを指定せずにインテントを開始しており、インテント リゾルバーは URL からタイプを見つけていません ( content:
URI の場合と同様)。多くの人が、おそらく機能しないインテント フィルタを使用して推奨している可能性があります。誰かが決定的な答えを持っていますか:インテントフィルターを使用するのは何<data android:scheme="http" android:mimeType="..." />
ですか?