2016-05-25 1 views
0

私はアプリケーションでディープリンクを実装しようとしています。Androidパターンパスの逆接続

URL1:http://www.example.com/games/randomtext-ゲーム -randomno

URL2:

これらは2つのURLであるhttp://www.example.com/games/randomno-スコア/randomscore

明らかなように、URLの両方の最初の部分がに解決します同じパターン。この場合、2つのパターンを区別するための方法はありますか?それぞれが個別に要件に対応しています。 私はさまざまなSOのリンクを調べ、多くのパターンを試しましたが、問題はurl1で選択されたパターンが自動的にurl2を解決するということです。 ゲームスコアは上記のURLの定数ですので、それらを使って区別したいと思います。前もって感謝します。

答えて

1

URL1:http://www.example.com/games/randomtext-game-randomno/

 <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:pathPattern="\\/games\\/.*game.*\\/.*"/> 
     </intent-filter> 

URL2:http://www.example.com/games/randomno-scores/randomscore

 <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:pathPattern="\\/games\\/.*scores\\/.*"/> 
     </intent-filter> 
1

あなたはこのような何かを行うことができますURIを解析中にすべてのリンクは、(/ゲームの後に)同じレベルで異なっている場合:

Uri uri = getIntent()。getData(); 文字列カテゴリ= uri.getPathSegments()。get(1);

カテゴリは、Url1の場合はrandomtext-game-randomno、Url2の場合は randomno-scoreになります。

getPathSegments()の詳細https://developer.android.com/reference/android/net/Uri.html

+0

あなたのアプローチは正しいですが、これにはJavaコードが必要です。私はXMLレベルでこれを解決することを望んでいましたが、そうする方法はないようです。とにかく、半透明のアクティビティを使用して問題を解決し、そこからディープリンクを解決して目的のアクティビティにルーティングしました。 –