我们能否知道用户已为特定操作设置了默认应用程序?即 android.intent.action.CALL_PRIVILEGED
假设我的应用程序还提供了 Call_privilaged 的调用操作。但用户已将内置拨号器设置为 Call_privilaged 操作的默认启动器。
我的问题是我可以从程序上知道用户已将拨号器设置为 Call_privalged 操作的默认启动器。
谢谢你。
我们能否知道用户已为特定操作设置了默认应用程序?即 android.intent.action.CALL_PRIVILEGED
假设我的应用程序还提供了 Call_privilaged 的调用操作。但用户已将内置拨号器设置为 Call_privilaged 操作的默认启动器。
我的问题是我可以从程序上知道用户已将拨号器设置为 Call_privalged 操作的默认启动器。
谢谢你。
我们能否知道用户已为特定操作设置了默认应用程序?即 android.intent.action.CALL_PRIVILEGED
我不认为有一个简单的方法可以做到这一点。打电话getPreferredActivities()
,PackageManager
并筛选List<IntentFilter>
你回来尝试找到适合你Intent
可能工作的匹配项。
您可以使用resolveActivity()
Intent 或 PackageManager。
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 上测试。