今回は暗黙的インテントを受け取る側(起動される側)についてです。
暗黙的インテントを受け取れるようにするには、マニフェストファイルにインテントフィルタを追加します。
インテントフィルタとは、処理できる暗黙的インテントの種類をシステムに伝えるためのものです。
<activity
android:name="com.example.allowingotherappstostartsample.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http" />
</intent-filter>
</activity>
1個目のインテントフィルタは、EclipseでAndroidプロジェクトを新規作成したときに自動生成されるマニフェストファイルに記述されているものです。
親タグのactivityがアプリのエントリポイントであることを示すandroid.intent.action.MAINと、
ランチャーから起動可能(であることを示すandroid.intent.category.LAUNCHERが指定されています。
2個目のインテントフィルタが今回追加したもので、下記の条件を満たす暗黙的インテントを受け取れる(処理できる)ことを表しています。
・アクションがIntent.ACTION_VIEW
・データに設定されているURIがhttp
カテゴリに指定されているcategory.DEFAULTは、暗黙的インテントを受け取るには必ず指定する必要があります
(但し、android.intent.action.MAINとandroid.intent.category.LAUNCHERを指定した場合は必須ではない)。
上記のインテントフィルタを設定したアプリを起動する側のコードは以下のようになります。
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse("http://www.example.com"));
startActivity(browserIntent );
このコードを実行すると、Chooserにデフォルトのブラウザに加えて受け取り側アプリが表示され、暗黙的インテントを受け取れるようになったことが分かります。
0 件のコメント:
コメントを投稿