Android动态申请权限-读IMEI码为例

版权声明:本文为博主原创文章,未经博主允许不得转载。 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是自定义的常量,我定义在了工具类里面

猜你喜欢

转载自blog.csdn.net/zhouwengong/article/details/81387779
今日推荐