Android Manifest 权限获取 - litonghui/TechBlog GitHub Wiki

用户在安装一个应用时候,会关注它使用了哪些权限?而这些权限一般在Android Manifest 会声明,如何获取声明这些权限?

1. 拆包获取Android Manifest 文件,获取uses-permission 声明的所有权限
2,通过PackageManager 获取 packageInfo 的 requestedPermissions 信息,例如:
public static List<PermissionInfo> getApkPermission(String apkFile,
													PackageManager pm){
	List<PermissionInfo> permissionInfos = new ArrayList<PermissionInfo>();
	PackageInfo packageInfo =  pm.getPackageArchiveInfo(apkFile, PackageManager.GET_PERMISSIONS);
	String[] permissions = packageInfo.requestedPermissions;
	for(String permName : permissions ){
		try {
			PermissionInfo permissionInfo = pm.getPermissionInfo(permName, 0);
			permissionInfos.add(permissionInfo);
			Log.v("lth",""+permName );
		} catch (PackageManager.NameNotFoundException e) {
			e.printStackTrace();
		}
	}
	return permissionInfos;
}

V/lth: android.permission.GET_TASKS
V/lth: android.permission.CAMERA
V/lth: android.permission.READ_EXTERNAL_STORAGE
V/lth: android.permission.RECORD_AUDIO
V/lth: android.permission.MODIFY_AUDIO_SETTINGS
V/lth: android.permission.CALL_PHONE
V/lth: android.permission.RESTART_PACKAGES
V/lth: android.permission.READ_SYNC_SETTINGS
V/lth: android.permission.WRITE_SYNC_SETTINGS
V/lth: android.permission.AUTHENTICATE_ACCOUNTS
V/lth: android.permission.READ_LOGS
V/lth: android.permission.MOUNT_UNMOUNT_FILESYSTEMS

获取这些权限,对应的描述,查看API 文档