我想使用基于方案的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。
我想要的是uri my:// mystore只有一种合适的意图过滤器。
有什么帮助吗?谢谢。
最佳答案
在应用程序的第一次运行中,使用PackageManager
禁用您不想使用的活动。
请不要发明自定义方案。请改用HTTP URL:
<data android:scheme="http" android:host="yourdomain.com" android:path="/something/or/another" />
这样,您实际上可以在
http://yourdomain.com/something/or/another
上放置一个真实的网页,因此,如果有人获得了您的链接但未安装您的应用程序,则他们将看到您的网页,而不会出现错误。另外,请删除
android:configChanges
,或处理所有配置更改。