权限组列表:
https://blog.csdn.net/lanxuan1993/article/details/102954531
一、RxPermissions
https://blog.csdn.net/lanxuan1993/article/details/105843594
二、AndPermission
https://blog.csdn.net/lanxuan1993/article/details/106081394
三、Android原生权限
https://blog.csdn.net/lanxuan1993/article/details/106081600
四、Cordova Plugin插件中使用permission原生方法
private boolean checkPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { List<String> permissions = new ArrayList<>(); if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(cordova.getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) { permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (!cordova.hasPermission(Manifest.permission.READ_EXTERNAL_STORAGE)) { permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE); } if (!cordova.hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (!cordova.hasPermission(Manifest.permission.CAMERA)) { permissions.add(Manifest.permission.CAMERA); } if (!cordova.hasPermission(Manifest.permission.RECORD_AUDIO)) { permissions.add(Manifest.permission.RECORD_AUDIO); } if (permissions.size() != 0) { String[] permissionGroup = permissions.toArray(new String[permissions.size()]); cordova.requestPermissions(this, REQ_PERMISSION_CODE, permissionGroup); return false; } } return true; } @Override public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException { super.onRequestPermissionResult(requestCode, permissions, grantResults); List<String> permissionDenieds = new ArrayList<>(); List<String> permissionAlwayDenieds = new ArrayList<>(); switch (requestCode) { case REQ_PERMISSION_CODE: for (int i = 0; i < grantResults.length; i++) { if (PackageManager.PERMISSION_GRANTED != grantResults[i]) { permissionDenieds.add(permissions[i]); System.out.println("拒绝权限"); if (!ActivityCompat.shouldShowRequestPermissionRationale(cordova.getActivity(), permissions[i])) { System.out.println("提示用户,禁止了权限,并且勾选了不在提示框"); permissionAlwayDenieds.add(permissions[i]); } else { System.out.println("提示用户,禁止了权限,没有勾选不再提示框"); } } } if (permissionDenieds.size() > 0) { if (permissionAlwayDenieds.size() > 0) { Toast.makeText(cordova.getActivity(), "用户拒绝权限,且不再提示!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(cordova.getActivity(), "用户拒绝权限!", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(cordova.getActivity(), "用户允许权限!", Toast.LENGTH_SHORT).show(); } break; default: break; } }
五、Android 动态权限适配个别厂商( oppo & vivo )