1

我们能否知道用户已为特定操作设置了默认应用程序?即 android.intent.action.CALL_PRIVILEGED

假设我的应用程序还提供了 Call_privilaged 的​​调用操作。但用户已将内置拨号器设置为 Call_privilaged 操作的默认启动器。

我的问题是我可以从程序上知道用户已将拨号器设置为 Call_privalged 操作的默认启动器。

谢谢你。

4

2 回答 2

1

我们能否知道用户已为特定操作设置了默认应用程序?即 android.intent.action.CALL_PRIVILEGED

我不认为有一个简单的方法可以做到这一点。打电话getPreferredActivities()PackageManager并筛选List<IntentFilter>你回来尝试找到适合你Intent可能工作的匹配项。

于 2012-05-31T12:46:44.120 回答
0

您可以使用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 上测试。

于 2013-08-03T20:13:18.093 回答