1

我想使用基于方案的 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>

如您所见,手机和平板电脑有两个 Main Activity,在 LogoActivity 中根据屏幕大小确定将打开哪个 Main Activity。但问题是当用户在网络浏览器中单击 my://mystore 链接时,有两种选择可以启动 MainActivtyPhone 和 MainActivityTablet。

我想要的是只有一个合适的意图过滤器适用于 uri my://mystore 。有什么帮助吗?谢谢。

4

1 回答 1

1

在您的应用程序第一次运行时,使用PackageManager来禁用您不想使用的活动。

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

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

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

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

于 2011-08-25T06:33:11.207 回答