Android 当出现多个选项时,优先启动特定应用程序
我在一个应用程序中有一个具有以下意图过滤器的活动:Android 当出现多个选项时,优先启动特定应用程序,android,android-intent,intentfilter,Android,Android Intent,Intentfilter,我在一个应用程序中有一个具有以下意图过滤器的活动: <intent-filter> <data android:scheme="http" android:host="test.co.uk"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/&g
<intent-filter>
<data
android:scheme="http" android:host="test.co.uk"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
当这个意图被触发时,预期的Android行为就会发生——操作系统会询问我是否要打开web浏览器或我自己的应用程序(因为它们都注册为接收http
数据)
问题:
我的目标是以编程方式将其中一个应用程序优先于另一个应用程序-如果安装了我自己的应用程序,我希望使用它,如果没有安装,则返回到在浏览器中打开链接。这是否可能在不导致操作系统询问用户希望使用哪个应用程序的情况下实现
企图
我有以下查询包管理器的代码,以查找可以处理我的意图的所有活动。见下文:
PackageManager pm = getPackageManager();
List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(intent, 0);
PackageManager pm=getPackageManager();
List resolveInfoList=pm.querytentActivities(intent,0);
我正在尝试为返回的每个活动使用
ResolveInfo
对象(在本例中有2个活动)。我尝试的是从每个ResolveInfo
获取主机,这样我就可以确定哪个主机正在专门监听test.co.uk
(这样我就可以直接触发指向此应用程序包的意图),但我看不到任何检索主机的方法。你可以检查你的应用程序是否安装在这里,然后启动该应用程序的明确意图(如果已安装)
PackageManager pm = getPackageManager();
List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(intent, 0);