AndroidブラウザからカスタムAndroidアプリケーションを起動する 質問する

AndroidブラウザからカスタムAndroidアプリケーションを起動する 質問する

Android ブラウザから Android アプリケーションを起動する方法について教えていただけませんか?

ベストアンサー1

使用<intent-filter>とともに<data>要素です。たとえば、twitter.com へのすべてのリンクを処理するには、 内に次のコードを追加し<activity>ますAndroidManifest.xml

<intent-filter>
    <data android:scheme="http" android:host="twitter.com"/>
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

次に、ユーザーがブラウザで Twitter へのリンクをクリックすると、アクションを完了するためにブラウザとアプリケーションのどちらのアプリケーションを使用するかを尋ねられます。

もちろん、Web サイトとアプリを緊密に統合したい場合は、独自のスキームを定義することもできます。

<intent-filter>
    <data android:scheme="my.special.scheme" />
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

次に、Web アプリに次のようなリンクを配置します。

<a href="my.special.scheme://other/parameters/here">

そして、ユーザーがそれをクリックすると、アプリが自動的に起動します (おそらく、そのmy.special.scheme://タイプの URI を処理できるのはアプリだけなので)。これの唯一の欠点は、ユーザーがアプリをインストールしていない場合、厄介なエラーが発生することです。また、確認する方法があるかどうかはわかりません。


編集:あなたの質問に答えるにはgetIntent().getData()Uriオブジェクト。その後、Uri.*メソッドを使用して必要なデータを抽出できます。たとえば、ユーザーが次のリンクをクリックしたとしますhttp://twitter.com/status/1234

Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"

上記は のどこでも実行できますActivityが、 で行うのがおそらく望ましいでしょう。 を使用して 内のパス セグメントの数を取得することonCreate()もできます。特定の部分を抽出するために使用できる他の方法については、javadoc または Android 開発者 Web サイトを参照してください。params.size()UriUri

おすすめ記事