2017-06-13 71 views
2

我有,比如域example.com。它可以與httpshttp一起使用。我有Android客戶端用於此服務。我希望客戶端能夠打開多個鏈接類型。它們是:如何處理不同活動的應用程序鏈接?

http://example.com 
https://example.com 
http://example.com/app 
https://example.com/app 

這四個應該在ListActivity上打開。但也有另一個鏈接,如:

https://testask.com/i/__some_guid__ 
https://testask.com/item/__some_guid__ 
and relevant link without https 

他們應該打開另一個活動,比如說DetailsActivity。目前我有以下意向過濾器爲詳細活動:

<intent-filter 
    android:autoVerify="true" 
    tools:targetApi="m"> 
    <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="@string/root_host_endpoint" 
     android:pathPattern="/i/.*" /> 
    <data 
     android:host="@string/root_host_endpoint" 
     android:pathPattern="/item/.*" /> 
</intent-filter> 

看起來像它的工作正常。但我不明白,如何添加MainActivity意圖過濾器指向根主機url並且不重疊DetailsActivity intent過濾器。

回答

0

韋爾普,一些實驗後,我發現下面的意圖過濾器工作正常:

 <intent-filter 
      android:autoVerify="true" 
      tools:targetApi="m"> 
      <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="@string/root_host_endpoint" /> 
      <data 
       android:host="@string/root_host_endpoint" 
       android:path="/" /> 
      <data 
       android:host="@string/root_host_endpoint" 
       android:path="/app" /> 
     </intent-filter> 
0

您可以使用不同的意向過濾器進行多項活動。您可以使用Action/Category/Data區分您的意圖過濾器。在你的情況下,你必須調整你的數據配置,讓它處理不同的意圖。所以MainActivity/ListActivity都會有不同的數據結構,而不是DetailsActivity

+0

謝謝你,我的理解,我只是沒有得到如何寫在XML中。 – Bringoff

0
<activity android:name=".ListActivity"> 
<intent-filter 
android:autoVerify="true" 
tools:targetApi="m"> 
<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="example.com" 
    android:pathPattern="/*/.*" /> 
</intent-filter> 
</activity> 

<activity android:name=".DetailsActivity"> 
<intent-filter 
android:autoVerify="true" 
tools:targetApi="m"> 
<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="@string/root_host_endpoint" 
    android:pathPattern="/i/.*" /> 
<data 
    android:host="@string/root_host_endpoint" 
    android:pathPattern="/item/.*" /> 
</intent-filter> 
</activity> 
+0

不幸的是,它不處理鏈接鏈接 http://example.com https://example.com http://example.com/app https://example.com/app – Bringoff

+0

add

相關問題