2012-05-31 72 views
1

我们可以知道用户已经为特定操作设置了默认应用程序吗?一世。即android.intent.action.CALL_PRIVILEGED清除默认Android应用程序

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

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

谢谢。

回答

1

我们可以知道用户为特定操作设置了默认应用程序吗?一世。即android.intent.action.CALL_PRIVILEGED

我不认为有一个简单的方法来做到这一点。在PackageManager上拨打getPreferredActivities(),然后筛选List<IntentFilter>,您可以尝试为您的Intent找到匹配项。

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。