日モバイルブラウザからアプリを呼び出す方法アプリに連動したウェブサイトから、アプリを呼び出したいと思ったことはありませんか。アクティビティのインテントフィルタをURIスキームで定義すると、他のアプリとの連携がURIで利用できるようになります。引き渡せる情報はURIパラメータなので、インテントによる起動ほど柔軟ではありません。最近、ディープリンクが注目されだして、ブラウザからアプリの詳細ページへ直接リンクをつくること(ディープリンク)で、ユーザビリティを向上させることが求められています。Conversion(行動誘発モバイルアプリ広告)が開始され、アプリのインストールだけでなく、アプリの利用を促し、アプリ内課金を促進するFacebook広告も作成できるようになりました。URIによるアプリの起動を実装しておくと、このような広告も簡単に利用することができます。マニフェストスマホのブラウザからアプリを呼び出すには、まずマニフェストでアクティビティに対して設定をしておく必要があります。ブラウザから呼び出したアクティビティの定義に以下のようなintent-filterを追加します。android:schemeは大文字と小文字が区別されますが、全て小文字で定義することが推奨されているようです(RFCのURI定義とは異なる)。URLsandroid:hostは、ドメインを含むならFQDNに沿っておかないと、ブラウザが不正なものと認識してしまいます。実在しなくても大丈夫です。android:pathはルートでよいなら必要ないです。スキーマの決定で気になるのは、他のアプリと重複しないかですが、host名を所有するドメインにしておけば、問題ないのだろうと推測しています。iOSでは、以下の記事に詳しく書かれていますが、アンドロイドでは、どのアプリを選択するのかとダイアログが表示されるのだろうと思います。URIを分解マニフェストでintent-filterを指定したアクティビティのonStartハンドラでURIを調べて、処理を振り分けます。インテントからURIを取得する。ここではパスだけで判定しています。top画面へ遷移する。}}URIの組み立てもし、自身のアプリの中からも利用したい場合は、以下のようにURIを組み立てて、アクティビティを呼び出すこともできます。必要ならパラメータも付加します。モバイルブラウザからの呼出ウェブサイトのページに以下のようなアンカータグを記述しておきます。モバイルブラウザからこのリンクをたどるとアプリが起動します。Playへ移動したくもなります。アンドロイドのブラウザにはそのような機能はありませんが、stackoverflow.comにタイムアウトを使った例があったので、合わせてご紹介します。欠点は、インストールの有無を調べるために、最初にlocationへ飛ばすので、インストール済みならそのまま遷移してしまうことです。ページをロードした時点でインストール有無を調べる方法がありません。