Android                
            深いリンクの処理
        
        
            
    サーチ…
前書き
ディープリンクとは、ユーザーをアプリ内の特定のコンテンツに直接誘導するURLです。インテントフィルタを追加し、受信インテントからデータを抽出して、ユーザーをアプリの正しい画面に誘導することで、ディープリンクを設定できます。
パラメーター
 <data>属性 | 詳細 | 
|---|---|
| スキーム |  URIのスキーム部分(大文字小文字を区別する)。例: http 、 https 、 ftp  | 
| ホスト |  URIのホスト部分(大文字小文字を区別する)。例: google.com 、 example.org  | 
| 港 |  URIのポート部分。例: 80 、 443  | 
| パス |  URIのパス部分。 /始まる必要があります。例: / 、 /about  | 
| pathPrefix |  URIのパス部分の接頭辞。例: /item 、 /article  | 
| パスパターン |  URIのパス部分に一致するパターン。例: /article/[0-9]* /item/.* /article/[0-9]*  | 
| mimeType | 一致するMIMEタイプ。例: image/jpeg 、 audio/*  | 
備考
 <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>要素の外積です。複数のドメイン、複数のパス、複数のスキームの例がこれを実証しています。 
リソース
- アプリコンテンツのディープリンクを有効にする (developer.android.com)
 -  
<intent-filter>(developer.android.com 
シンプルなディープリンク
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¶m2=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