Intentの項で、"http~"で始まるURIを持つ暗黙的インテントを投げたら、それにブラウザが反応し、起動して、そのURIの指すWebページを表示できた・・・。
このブラウザの様に、受け側のアプリが、送る側のインテントの条件に当てはまっていれば、アプリでそのインテントを受け取ってさまざまな処理につなげることができる・・・。
この受け側の対応はIntentFilterを使って行う・・・。
IntentFilter | Android Developers
AndroidManifest.xmlに、
intent-filterタグを追加・・・。
actionは、"android.intent.action.VIEW"・・・。
URIのデータ表示アクション・・・。
categoryは、"android.intent.category.DEFAULT"・・・。
既定のカテゴリ・・・。
dataのスキーマは"http"・・・。
"http~"から始まるURIなら反応するということ・・・。
あとはMainActivity.javaで、
onCreate時にgetIntentで送られてきたintentを取得・・・。
intent.getDataでuriを取得し、Toastでそれを表示・・・。
C:\Users\bg1\Documents>adb install -r Intent_.apk 5668 KB/s (496116 bytes in 0.085s) pkg: /data/local/tmp/Intent_.apk Success C:\Users\bg1\Documents>adb install -r IntentFilter_.apk 5308 KB/s (497452 bytes in 0.091s) pkg: /data/local/tmp/IntentFilter_.apk Success C:\Users\bg1\Documents>
今回は実機で試す・・・。
以前作ったIntentプロジェクトのIntent_.apkと今回のIntentFilterプロジェクトのIntentFilter_.apkをインストールする・・・。
IntentFilter_とIntent_・・・。
Intent_を起動すると、
と表示されるので、Button1を押す・・・。
アプリケーションを選択するダイアログが出る・・・。
既定ブラウザであるChromeや、これまで作ってきたブラウザZincもそうだが、それに加えてIntentFilter_も表示されている・・・。
IntentFilter_がIntent_の投げたインテントに対応しているということ・・・。
IntentFilter_を選択し、
今回は、今回のみを押そう・・・。
(常時にしたら、httpで始まるURIのとき、ブラウザの代わりに起動してしまうのでそれはやめよう・・・。)
そうすると、IntentFilter_が起動し、トーストでURIが表示される・・・。
Sample/android/IntentFilter/IntentFilter/src/IntentFilter at master · bg1bgst333/Sample · GitHub