6

我遇到以下情況。我在AndroidManifest.xmlAndroid深層鏈接不適用於多個方案

預期的行爲定義了以下深層鏈接的意圖過濾器是當我發現格式http://​www.domain.com/a/blabla的URL或當有短信鏈接/格式domain/xyz系統的電子郵件應觸發我的活動。

案例#1:做工精細

<activity 
     android:name=".MYActivity"> 
     <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:host="xyz" 
       android:scheme="domain" /> 
     </intent-filter> 
    </activity> 

案例#2:做工精細

 <activity 
     android:name=".MYActivity"> 
     <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.domain.com" 
       android:pathPrefix="/a" 
      /> 
     </intent-filter> 
    </activity> 

案例#3:不工作

<activity 
     android:name=".MYActivity"> 
     <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:host="xyz" 
       android:scheme="domain" /> 
      <data 
       android:scheme="http" 
       android:host="www.domain.com" 
       android:pathPrefix="/a" 
      /> 
     </intent-filter> 
    </activity> 

任何建議/點/幫助非常感謝

+0

TL; DR:'host'和'pathPrefix' *有*是一個'意向filter'相同。你可以用'scheme'將'data'元素複製到一個'intent-filter'中。例如:同一主機的http和https版本/ pathPrefix可以在一個intent過濾器中。 – 2017-02-28 20:46:01

回答

10

我把兩個不同的意向過濾器的深度鏈接,它的工作!

+0

你可以發佈你的工作代碼嗎?我遇到了兩個不同的意圖過濾器 – 2015-09-29 15:21:31

+0

@Renges你看到的錯誤是什麼?什麼是isssue? – Blanc 2015-10-01 04:43:45

+0

當我測試終端,但當我的朋友把網站,並通過自定義網址schemce,它不會打開我的應用程序 – 2015-10-01 05:26:52

5

<data>文檔:它指出:

所有包含在同一<intent-filter>元件內的<data>元件以相同的過濾器作出貢獻。

因此

<intent-filter> 
    <data 
     android:host="xyz" 
     android:scheme="domain" /> 
    <data 
     android:scheme="http" 
     android:host="www.domain.com" 
     android:pathPrefix="/a" /> 
<intent-filter> 

等效解釋爲(未實際代碼)

<intent-filter> 
    <data 
     android:host="xyz" 
     android:scheme="domain" 
     android:scheme="http" 
     android:host="www.domain.com" 
     android:pathPrefix="/a" /> 
<intent-filter> 

這顯然有一些矛盾,例如主機是xyz VS www.domain.com

+0

好的。所以這意味着我不能在同一個意圖過濾器中擁有不同的主機。我會盡量讓他們在不同的意圖過濾器。感謝您的意見 – Blanc 2014-12-05 17:29:35

+0

我強烈建議閱讀''和''的文檔。 – TWiStErRob 2014-12-05 17:33:20

+0

在支持什麼版本的Android複製方案,我不認爲它不可能按照XSD ... – whoami 2016-09-26 07:40:11