17

我想攔截幾個不同的鏈接與我的應用程序,我有意圖過濾器數據參數的麻煩做到這一點。Android意圖過濾http地址

這裏有2種類型的,我想攔截

  1. http://www.domain.com/#id=abcdef123346
  2. http://www.domain.com/social/landing/abcdef123456

我已經決定有一個單獨的活動來攔截這兩個鏈接和使用Java正則表達式鏈接開始正確的活動。不過,我似乎無法捕捉到只是這兩種格式,無需捕捉像http://www.domain.com/abc123

<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:pathPattern="/#id.*" /> 
     </intent-filter> 

這是我目前試圖攔截1型和出於某種原因不能正常工作。

這個意圖過濾器攔截正常的2型

<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:host="domain.com" /> 
      <data android:host="www.domain.com" /> 
      <data android:pathPrefix="/share/web" /> 
      <data android:pathPrefix="/social/landing" /> 
     </intent-filter> 

感謝,

+0

嘿@leo我想實現同樣的事情,我只是想打開我的應用程序時,用戶從瀏覽器啓動移動網站我做了同樣的事情在這裏,但它沒有任何幫助? – Tony 2016-05-23 01:20:55

回答

3

我認爲字符串pathPattern是匹配「/」和「#ID ......」,是因爲省略它是片段的一部分。如果您改爲使用http://www.domain.com/id/abcdef123456,pathPattern可以匹配「/id/.*」,因爲它是路徑的一部分。

+0

這絕對是一種可能性,但涉及改變服務器行爲,希望不會那樣做。任何其他可能性? – Leo 2011-05-30 22:35:34

+0

我沒有看到pathFragment的任何選項。你能不能抓住所有發送到「/」的內容並在稍後獲取ID? – user775598 2011-05-30 22:37:29

+0

不幸的是,如果我攔截所有在其中都有斜線的鏈接,我會阻止我的短網址解析,並且無法弄清楚實際目標是什麼。 – Leo 2011-05-30 22:47:38