我们可以知道用户已为特定操作设置了默认应用程序吗?一世。即android.intent.action.CALL_PRIVILEGED
假设我的应用程序还提供了Call_privilaged的调用操作。但是用户已将内置拨号器设置为Call_privilaged操作的默认启动器。
我的问题是我能否以语法方式知道用户已将拨号器设置为Call_privalged操作的默认启动器。
谢谢。
答案 0 :(得分:1)
我们可以知道用户已为特定操作设置了默认应用程序吗?一世。即android.intent.action.CALL_PRIVILEGED
我认为没有一种简单的方法可以做到这一点。在getPreferredActivities()
上拨打PackageManager
,然后通过List<IntentFilter>
筛选,以便找到与您的Intent
匹配的内容。
答案 1 :(得分:0)
您可以使用Intent或PackageManager的resolveActivity()
。
Intent intent = ...
ComponentName componentName = intent.resolveActivity(getPackageManager());
if (componentName.getPackageName().equals("android")) {
// No default selected
...
} else if (componentName.getPackageName().equals(getPackageName())) {
// We are default
...
} else {
// Someone else is default
...
}
如果你自己没有处理这个意图,你也可能需要对没有应用程序能够处理意图的情况进行空检查。
不确定这是否适用于所有设备和Android的所有版本。在Nexus设备上测试Android 4.1-4.3。