2011-08-25 45 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或处理全部配置更改。