Android的运行时权限 发表于 2018-04-09 | 评论数: 本文字数: 4.5k | 阅读时长 ≈ 4 分钟 一般权限http://www.bejson.com/doc/AndroidManifest/ 运行时权限12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS permission:android.permission.READ_CONTACTSgroup:android.permission-group.PHONE permission:android.permission.READ_CALL_LOG permission:android.permission.ANSWER_PHONE_CALLS permission:android.permission.READ_PHONE_NUMBERS permission:android.permission.READ_PHONE_STATE permission:android.permission.CALL_PHONE permission:android.permission.WRITE_CALL_LOG permission:android.permission.USE_SIP permission:android.permission.PROCESS_OUTGOING_CALLS permission:com.android.voicemail.permission.ADD_VOICEMAILgroup:android.permission-group.CALENDAR permission:android.permission.READ_CALENDAR permission:android.permission.WRITE_CALENDARgroup:android.permission-group.CAMERA permission:android.permission.CAMERAgroup:android.permission-group.SENSORS permission:android.permission.BODY_SENSORSgroup:android.permission-group.LOCATION permission:android.permission.ACCESS_FINE_LOCATION permission:android.permission.ACCESS_COARSE_LOCATIONgroup:android.permission-group.STORAGE permission:android.permission.READ_EXTERNAL_STORAGE permission:android.permission.WRITE_EXTERNAL_STORAGEgroup:com.sina.weibo.permission-group permission:com.sina.weibo.permission.USERgroup:android.permission-group.MICROPHONE permission:android.permission.RECORD_AUDIOgroup:com.gsma.services.nfc.permissiongroup:android.permission-group.SMS permission:android.permission.READ_SMS permission:android.permission.RECEIVE_WAP_PUSH permission:android.permission.RECEIVE_MMS permission:android.permission.RECEIVE_SMS permission:android.permission.SEND_SMS permission:android.permission.READ_CELL_BROADCASTS 简单封装 PermissionUtils.java12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849public class PermissionUtils { public static final int PERMISSION_REQUEST_CODE = 0; private String[] permissions; private Activity activity; public PermissionUtils( Activity activity) { this.activity = activity; } /** * 检查权限 * @param permissions * @return */ public boolean checkPermissions(String[] permissions) { this.permissions=permissions; for (String permission : permissions) { if (checkPermission(permission)) { return true; } } return false; } /** * 检查权限是否全部申请成功onRequestPermissionsResult使用 * @param grantResults * @return */ public boolean checkAllPermissionsGranted(@NonNull int[] grantResults) { for (int grantResult : grantResults) { if (grantResult == PackageManager.PERMISSION_DENIED) { return false; } } return true; } private boolean checkPermission(String permission) { return ContextCompat.checkSelfPermission(activity.getApplication(), permission) == PackageManager.PERMISSION_DENIED;//PackageManager.PERMISSION_GRANTED 是不需要授权 } /** * 请求权限 */ public void requestPermissions() { ActivityCompat.requestPermissions(activity, permissions, PERMISSION_REQUEST_CODE); }} 使用1234567891011121314151617181920212223242526272829303132 PermissionUtils permissionUtils; static final String[] PERMISSIONS = new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO }; ...... ..... permissionUtils=new PermissionUtils(this); if(permissionUtils.checkPermissions(PERMISSIONS)){ permissionUtils.requestPermissions(); }else { //通过权限的操作 } .........@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case PermissionUtils.PERMISSION_REQUEST_CODE: if (permissionUtils.checkAllPermissionsGranted(grantResults)) { //通过权限的操作 } else { // 权限拒绝后的提示 ToastUtils.showToast(this,"没有权限"); } break; } }
v1.5.2