背景
我正在尝试调查办公室的应用程序需要更改其权限,以便更好地支持 Android 6。
问题
我发现哪些权限需要确认,哪些不需要,除了以下一项:
<uses-permission android:name=".permission.C2D_MESSAGE"/>
似乎我寻找的任何地方都没有提到此权限,因为它不是自动授予的,但我找不到用户可以在哪里启用它作为确认。
我尝试过的
为了找到默认授予的权限和未授予的权限,我只是调用了以下代码:
private void checkPermissionsOfApp(String packageName) {
PackageManager pm = getPackageManager();
try {
final ApplicationInfo applicationInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
Log.d("AppLog", "Listing all permissions of app with PackageName: " + applicationInfo.packageName);
PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);
//Get Permissions
String[] requestedPermissions = packageInfo.requestedPermissions;
if (requestedPermissions != null) {
for (String permission : requestedPermissions) {
boolean permissionGranted = pm.checkPermission(permission, packageName) == PackageManager.PERMISSION_GRANTED;
Log.d("AppLog", "permission:" + permission + " permissionGranted:" + permissionGranted);
}
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
和电话:
checkPermissionsOfApp(getPackageName());
使用上面的代码,它会因有问题的权限而崩溃,但是当使用 ContextCompat.checkSelfPermission 时,它会说它未被授予。
问题
怎么会这样?
我如何授予应用程序此权限?
有没有在任何地方提到过?