1. 定义需要动态获取的权限(下面是以读写外部存储卡权限为例)
private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE };
2. 手动申请权限
private void verifyStoragmissions(Activity activity) { int permission1 = ActivityCompat.checkSelfPermission(activity,"android.permission.READ_EXTERNAL_STORAGE"); int permission2 = ActivityCompat.checkSelfPermission(activity,"android.permission.WRITE_EXTERNAL_STORAGE"); if (permission1 != PackageManager.PERMISSION_GRANTED || permission2 != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
3. 判断用户是否授权权限,重写onRequestPermissionsResult函数接收用户授权情况
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
int n = grantResults.length; if (n < 1) return ; for (int i = 0; i < n; i++){ if (PackageManager.PERMISSION_GRANTED != grantResults[i]){ //用户未授予权限定义中对应的权限 //未授权,不能执行需要权限的操作。 }else{ //已授权可以执行相应操作 } } }