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()
Uri
Uri