に記載されている全ての危険な権限を照会してもらうことが可能な方法がありますPackageManager
を使用してそれらのリストを取得するよりも危険なアクセス許可。あなたのアプリまたはアプリの危険な権限の一覧を取得するには、次の方法を使用することができます。
public static List<PermissionInfo> getDangerousPermissions(Context context, String packageName)
throws PackageManager.NameNotFoundException {
List<PermissionInfo> dangerousPermissions = new ArrayList<>();
PackageManager pm = context.getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
if (packageInfo.requestedPermissions != null) {
for (String requestedPermission : packageInfo.requestedPermissions) {
try {
PermissionInfo permissionInfo = pm.getPermissionInfo(requestedPermission, 0);
switch (permissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE) {
case PermissionInfo.PROTECTION_DANGEROUS:
dangerousPermissions.add(permissionInfo);
break;
}
} catch (PackageManager.NameNotFoundException ignored) {
// unknown permission
}
}
}
return dangerousPermissions;
}
は
使用例:
try {
List<PermissionInfo> dangerousPermissions = getDangerousPermissions(this, "com.android.chrome");
System.out.println(String.format("%d dangerous permissions:", dangerousPermissions.size()));
for (PermissionInfo dangerousPermission : dangerousPermissions) {
System.out.println(dangerousPermission.name);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
出力:
I/System.out: 7 dangerous permissions:
I/System.out: android.permission.ACCESS_COARSE_LOCATION
I/System.out: android.permission.ACCESS_FINE_LOCATION
I/System.out: android.permission.CAMERA
I/System.out: android.permission.GET_ACCOUNTS
I/System.out: android.permission.RECORD_AUDIO
I/System.out: android.permission.WRITE_EXTERNAL_STORAGE
I/System.out: android.permission.READ_EXTERNAL_STORAGE
あなたが確かに歓迎されています'PackageManager'を使ってあなたのアプリケーションが要求するパーミッションを調べてください。私はあなたがそれらのどれが「危険な」ものであるかを見つけることもできると思います。これは保守的には、まれに変更されるべきではない静的String [静的String]よりも1〜2桁も複雑です。 – CommonsWare