美文网首页
Android判断某个权限是否开启

Android判断某个权限是否开启

作者: NOZUO | 来源:发表于2019-06-28 14:49 被阅读0次

原文:https://blog.csdn.net/qq_27400335/article/details/79412774

/** 常用权限(可能不全) **/

// SMS(短信)

//    SEND_SMS

//    RECEIVE_SMS

//    READ_SMS

//    RECEIVE_WAP_PUSH

//    RECEIVE_MMS

//    STORAGE(存储卡-读写权限)

//    READ_EXTERNAL_STORAGE

//    WRITE_EXTERNAL_STORAGE

//    CONTACTS(联系人)

//    READ_CONTACTS

//    WRITE_CONTACTS

//    GET_ACCOUNTS

//    PHONE(手机)

//    READ_PHONE_STATE

//    CALL_PHONE

//    READ_CALL_LOG

//    WRITE_CALL_LOG

//    ADD_VOICEMAIL

//    USE_SIP

//    PROCESS_OUTGOING_CALLS

//    CALENDAR(日历)

//    READ_CALENDAR

//    WRITE_CALENDAR

//    CAMERA(相机)

//    CAMERA

//    LOCATION(位置)

//    ACCESS_FINE_LOCATION

//    ACCESS_COARSE_LOCATION

//    SENSORS(传感器)

//    BODY_SENSORS

//    MICROPHONE(麦克风)

//    RECORD_AUDIO/**

*  读写权限  自己可以添加需要判断的权限

*/

public static String[]permissionsREAD={

        Manifest.permission.READ_EXTERNAL_STORAGE,

        Manifest.permission.WRITE_EXTERNAL_STORAGE };

/**

* 判断权限集合

* permissions 权限数组

* return true-表示没有改权限  false-表示权限已开启

*/

public static boolean lacksPermissions(Context mContexts,permissionsREAD) {

    for (String permission : permissions) {

        if (lacksPermission(mContexts,permission)) {

            return true;

        }

    }

    return false;

}

/**

* 判断是否缺少权限

*/

private static boolean lacksPermission(Context mContexts, String permission) {

    return ContextCompat.checkSelfPermission(mContexts, permission) ==

            PackageManager.PERMISSION_DENIED;

}

//Activity使用

if (lacksPermissions()){//读写权限没开启

    ActivityCompat.requestPermissions(this,permissionsREAD,0);

}else {

    //读写权限已开启

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode==0){

        for (int i = 0; i < permissions.length; i++) {

            if (grantResults[i]!=-1){

                //T.showShort(mContext,"权限设置成功");

            }else {

                //T.showShort(mContext,"拒绝权限");

                // 权限被拒绝,弹出dialog 提示去开启权限

                showPermissions();

                break;

            }

        }

    }

}

//弹出dialog

private void showPermissions(){

    final Dialog dialog=new android.app.AlertDialog.Builder(mContext).create();

    View v=LayoutInflater.from(mContext).inflate(R.layout.dialog_permissions,null);

    dialog.show();

    dialog.setContentView(v);

    Button btn_add= (Button) v.findViewById(R.id.btn_add);

    Button btn_diss= (Button) v.findViewById(R.id.btn_diss);

    btn_add.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View view) {

            dialog.dismiss();

            Intent intent = new Intent();

            intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

            intent.addCategory(Intent.CATEGORY_DEFAULT);

            intent.setData(Uri.parse("package:" + getPackageName()));

            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

            intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

            startActivity(intent);

        }

    });

    btn_diss.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View view) {

            dialog.dismiss();

        }

    });

}

相关文章

网友评论

      本文标题:Android判断某个权限是否开启

      本文链接:https://www.haomeiwen.com/subject/tqoscctx.html