サーチ…


前書き

ディープリンクとは、ユーザーをアプリ内の特定のコンテンツに直接誘導するURLです。インテントフィルタを追加し、受信インテントからデータを抽出して、ユーザーをアプリの正しい画面に誘導することで、ディープリンクを設定できます。

パラメーター

<data>属性詳細
スキーム URIのスキーム部分(大文字小文字を区別する)。例: httphttpsftp
ホスト URIのホスト部分(大文字小文字を区別する)。例: google.comexample.org
URIのポート部分。例: 80443
パス URIのパス部分。 /始まる必要があります。例: //about
pathPrefix URIのパス部分の接頭辞。例: /item/article
パスパターン URIのパス部分に一致するパターン。例: /article/[0-9]* /item/.* /article/[0-9]*
mimeType 一致するMIMEタイプ。例: image/jpegaudio/*

備考

<intent-filter>

この<action>要素と<category>要素の組み合わせは、ユーザーが別のアプリケーションのリンクをクリックしたときに特定のアクティビティを起動する必要があることをAndroidシステムに通知するものです。

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data ... />

</intent-filter>

複数の<data>タグ

<intent-filter>サポートする一連のディープリンクは、そのインテントフィルタで定義するすべての<data>要素の外積です。複数のドメイン、複数のパス、複数のスキームの例がこれを実証しています。

リソース

シンプルなディープリンク

AndroidManifest.xml:

<activity android:name="com.example.MainActivity" >
    
    <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="www.example.com" />

    </intent-filter>

</activity>

これにより、 MainActivityを開始するための深いリンクとしてhttp://www.example.comから始まるすべてのリンクが受け入れられます。

1つのドメイン上の複数のパス

AndroidManifest.xml:

<activity android:name="com.example.MainActivity" >
    
    <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="www.example.com" />

        <data android:path="/" />
        <data android:path="/about" />
        <data android:path="/map" />

    </intent-filter>

</activity>

ユーザーが次のいずれかのリンクをクリックするとMainActivityが起動します:

  • http://www.example.com/
  • http://www.example.com/about
  • http://www.example.com/map

複数のドメインと複数のパス

AndroidManifest.xml:

<activity android:name="com.example.MainActivity" >

    <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="www.example.com" />
    
        <data android:scheme="http"
              android:host="www.example2.com" />
    
        <data android:path="/" />
        <data android:path="/map" />
    
    </intent-filter>

</activity>

ユーザーが次のいずれかのリンクをクリックするとMainActivityが起動します:

  • http://www.example.com/
  • http://www.example2.com/
  • http://www.example.com/map
  • http://www.example2.com/map

同じドメインのhttpとhttpsの両方

AndroidManifest.xml:

<activity android:name="com.example.MainActivity" >

    <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" />
        <data android:scheme="https" />
    
        <data android:host="www.example.com" />
    
        <data android:path="/" />
        <data android:path="/map" />
    
    </intent-filter>

</activity>

ユーザーが次のいずれかのリンクをクリックするとMainActivityが起動します:

  • http://www.example.com/
  • https://www.example.com/
  • http://www.example.com/map
  • https://www.example.com/map

クエリパラメータの取得

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        Intent intent = getIntent();
        Uri data = intent.getData();

        if (data != null) {
            String param1 = data.getQueryParameter("param1");
            String param2 = data.getQueryParameter("param2");
        }
    }

}

ユーザーがhttp://www.example.com/map?param1=FOO&param2=BARへのリンクをクリックすると、 param1の値は"FOO"なり、 param2の値は"BAR"ます。

pathPrefixの使用

AndroidManifest.xml:

<activity android:name="com.example.MainActivity" >

    <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="www.example.com"
              android:path="/item" />
    
    </intent-filter>

</activity>

これにより、ユーザーがhttp://www.example.com/itemで始まるリンクをクリックするとMainActivityが起動します。

  • https://www.example.com/item
  • http://www.example.com/item/1234
  • https://www.example.com/item/xyz/details


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow