版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhouwengong/article/details/81387779
一 工具类 public class PermissionChecker { public static final String TAG = PermissionChecker.class.getSimpleName(); public static final int READ_PHONE_STATE = 1; private static PermissionChecker checker; private PermissionChecker(){ } public static PermissionChecker getInstance(){ if (checker == null){ checker = new PermissionChecker(); } return checker; } public static void requestReadPhoneState(Activity activity) { int hasWriteContactsPermission = activity.checkSelfPermission(Manifest.permission.READ_PHONE_STATE); if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { activity.requestPermissions(new String[] {Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE); return; } } }
二 调用
PermissionChecker.getInstance().requestReadPhoneState(this);
调用这个时会弹窗,询问你是否赋予权限,选完权限以后执行下面的方法
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case READ_PHONE_STATE: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission Granted // insertDummyContact(); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { return; } String deviceId = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId(); Logger.d(TAG, "-------> IMEI:" + deviceId); } else { // Permission Denied Toast.makeText(this, getString(R.string.permission_deny), Toast.LENGTH_SHORT) .show(); finish(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }
其中的READ_PHONE_STATE是自定义的常量,我定义在了工具类里面