6

ユーザーが特定のURLを参照したときに、アプリケーションを起動させようとしています。私はいくつかの例を見つけました、そしてそれらはすべてマニフェストに同じものを持っていますが、それは私にとってはうまくいきません。インテントフィルターをアクティビティとレシーバーの下に配置しました。

これが私のマニフェストスニペットです:

<intent-filter>
  <action android:name="android.intent.action.VIEW"></action>
  <category android:name="android.intent.category.DEFAULT"></category>
  <category android:name="android.intent.category.BROWSABLE"></category>
  <data android:host="www.urbandictionary.com" android:scheme="http"></data>
</intent-filter>

アクティビティの下にあるときはonNewIntentを使用し、レシーバーの下にあるときはonReceiveIntentを使用してみました。どちらも、単純なLog.i呼び出しを使用して、起動するかどうかを確認しました。運が悪いです。

4

1 に答える 1

9

私はmanifest.xmlファイルでこれを使用します:

<activity android:name=".SomeName">
    <intent-filter>
        <category android:name="android.intent.category.ALTERNATIVE" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:host="google.com" android:scheme="http" />  
    </intent-filter>
</activity>

これにより、アクティビティSomeNameが開始されます。私はandroid:hostの部分でwwwを使用していません。おそらくそれが違いを生むでしょう。

アクティビティが開始されると、(たとえば)を使用して.comの背後にあるデータを取得できます。

Uri data = getIntent().getData();
if(data != null && data.getPathSegments().size() >= 2){
    List<String> params = data.getPathSegments();
    String somestuff = params.get(0);
}

編集:アクティビティ内からホストを確認できない場合は、次の方法を使用します。

data.getHost();
于 2012-03-09T16:15:50.433 に答える