やりたいこと
・特定のURLクリック時にアプリをインストールしている場合はアプリケーション選択ダイアログが出て、ブラウザで遷移するかアプリを起動するか選べる
・アプリをインストールしていない場合は普通にページ遷移
具体的に言うと、オンエアー中のアニメのタイムラインを見に行こうとするとアプリケーションに移動するか、スマフォサイトで用意したページに行くか選べるようにしたいってこと。
まず、AndroidManifest.xmlを変更
   <activity
      android:name=".Test"
      android:label="@string/test.title">
      <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="http"
          android:host="test.tsubuani.com"
          android:pathPrefix="/live" />
      </intent-filter>
    </activity>
intent-filterにaction.View,category.DEFAULT,cateogry.BROWSABLEを追加。
dataにscheme,host,pathPrefixを追加。
schemeやhostとかはそれぞれ依存しているので注意が必要。
pathPrefixの他にも、pathやpathPatternなんてのも指定できる。
細かい仕様は下記参照。
http://www.techdoctranslator.com/android/guide/manifest/data-element
今回の例で言うと
http://test.tsubuani.com/live*******
っていうURLにアクセスしようとするとTestActivityが起動するという感じになる。
ActivityはonNewIntentに処理を書いてやればよい
  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Intent intent = getIntent();
    if( intent != null ) {
      /** リンク先のURLを取得する。 */
      String data = intent.getDataString();
      if(data != null){
        //urlを元にごにょごにょ
      }
    }
  }
これで、アプリをインストールしている人はアプリで実況TLを見ることが出来るし、
そうでない人はスマフォサイトで用意したページに遷移させることが出来る。
Androidはこんな感じでアプリ同士の連携がすごい簡単に出来るのが素敵。
 
0 件のコメント:
コメントを投稿