2011年5月24日火曜日

[Android Tips]特定URLへのアクセスをフックするには?

Androidでは、インテントフィルタという仕組みを使ってアクティビティを起動します(コンポーネントをアクティブにします)。

この仕組みを使ってブラウザでブラウジング中に特定のURLにアクセスした時に自身の作成したアプリケーションを起動させることができます。

例としてhttp://www.yahoo.co.jp/ へのアクセスをフックしてみます。

まずは、ブラウザからhttp://www.yahoo.co.jp にアクセスした時にどのようなインテントが発行されているのかLogCat(Androidのログ閲覧ツール)で確認します。すると下記のようなログが出力されています。

Starting activity: Intent {action=android.intent.action.VIEW categories={android.intent.category.BROWSABLE} data=http://www.yahoo.co.jp/ comp={com.android.browser/com.android.browser.BrowserActivity} }

ここまで分かればしめたものです。このログ通りにインテントフィルタを作成します。インテントフィルタは、AndroidManifest.xmlに記述します。

注意しなければならないのは、暗黙的インテントを処理するので、categoryにandroid.intent.category.DEFAULTも必要だというところです。
01.<intent -filter="">
02. <action android:name="android.intent.action.VIEW">
03. </action>
04. <category android:name="android.intent.category.DEFAULT">
05. </category>
06. <category android:name="android.intent.category.BROWSABLE">
07. </category>
08. <data android:scheme="http" android:host="www.yahoo.co.jp" android:path="/">
09. </data>
10.</intent>

以上で、特定URLへのアクセスをフックすることができます。

0 件のコメント:

コメントを投稿