2011-08-25 76 views
1

我想在Android中的Web瀏覽器中使用基於方案的Intent-Filter,DATA標籤中的主機這樣啓動我的應用程序。Android Intent-Filter for Multi Screen

<activity android:name=".activity.LogoActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".activity.phone.MainActivityPhone" android:configChanges="orientation|keyboard" 
     android:launchMode="singleTask"> 
     <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="my" android:host="mystore" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".activity.tablet.MainActivityTablet" android:configChanges="orientation|keyboard" 
     android:launchMode="singleTask"> 
     <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="my" android:host="mystore" />  
     </intent-filter> 
    </activity> 

正如你看到的,有兩個主要的活動手機和平板電腦,並在LogoActivity確定哪些主要活動將屏幕尺寸打開。但問題是當用戶點擊web瀏覽器中的my:// mystore鏈接時,有兩種選擇來啓動MainActivtyPhone和MainActivityTablet。

我想要的是隻有一個合適的意圖過濾器爲uri my:// mystore工作。 有什麼幫助嗎?謝謝。

回答

1

在您的應用程序的第一次運行中,使用PackageManager來禁用您不想使用的活動。

請不要發明自定義方案。請使用HTTP網址,而不是:

<data android:scheme="http" android:host="yourdomain.com" android:path="/something/or/another" /> 

這樣的話,實際上你可以把一個真實的網頁在http://yourdomain.com/something/or/another,所以如果有人得到你的鏈接,但沒有安裝您的應用程序,他們將看到您的網頁,而不是出錯。

此外,請刪除android:configChanges或處理全部配置更改。