SUGARSPOT

Androidアプリ、WEBサービス開発の SUGARSPOT  |Androidブログ「Androidのことなんだけど」もやってます

2011年12月8日木曜日

[Android]ブラウザからアプリを起動する際のメモ

ブラウザからアプリを起動する際のschemeについてメモ

まず、基本的なところから書いておくと起動したいアプリのapplicationにintent-filterを設定する
この時、ブラウザからの呼び出しに呼応するように
<category android:name="android.intent.category.BROWSABLE"/>
の記述が必要

次に、schemeの指定について
ブラウザから<a href="hoge://">ほげ起動</a>のような指定で起動させたい場合は、次のように指定する
<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="hoge"/>
</intent-filter>


でも、これだと
<a href="hoge://fuga">
<a href="hoge://hidebu">
でも起動しちゃうので、もう少し条件をつけて<a href="hoge://fuga">の場合だけ起動するようにする
この場合は、hostを指定すればOK
<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="hoge" android:host="fuga" />
</intent-filter>


これだけでもほぼ大丈夫だけど、さらに分岐させたい場合
例えば
<a href="hoge://fuga/init">で初期処理をして起動
<a href="hoge://fuga/restart">で前回の続きから起動
とかしたい場合は、pathを指定してpathを判別してから処理を振り分けるなどすれば良い
intent-filterの指定はこんな感じ
<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="hoge" android:host="fuga" android:path="/init"/>
</intent-filter>


ここで忘れちゃいけないのが、pathは
android:path="init"
ではなく
android:path="/init"
であること。"/"を忘れないように!

まとめると、URLが <a href="scheme://host/path">といった感じになるので、それに合わせてintent-filterを指定すればOK
他にも色々と指定できるパラメータがあるので、そのあたりは公式なドキュメントをどうぞ

http://developer.android.com/guide/topics/manifest/data-element.html

0 件のコメント:

コメントを投稿