用于多屏幕的Android Intent-Filter

时间:2011-08-25 03:39:35

标签: android intentfilter multiscreen

我想使用基于方案的Intent-Filter从Android中的Web浏览器启动我的应用程序,像这样在DATA标签中托管主机。

    <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。

我想要的是只有一个适当的intent-filter适用于uri my:// mystore。 有帮助吗?感谢。

1 个答案:

答案 0 :(得分:1)

首次运行应用程序时,请使用PackageManager禁用您不想使用的活动。

请不要发明自定义方案。请改用HTTP网址:

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

这样,您实际上可以在http://yourdomain.com/something/or/another放置一个真实的网页,所以如果有人获得您的链接但没有安装您的应用,他们将看到您的网页,而不是收到错误。

此外,请删除android:configChanges,或处理所有配置更改。