Android 6.0权限管理以及动态申请,以定位权限为例

前言:

我们都知道现在手机系统已经到了很高的版本,在我们的Android6.0以后很多权限都被列入危险权限,都需要用户手动去确认


1.我们先来看一下6.0以后被列为危险级别的一些权限

组名称 组下面的权限
group:android.permission-group.CONTACTS(联系人组) android.permission.WRITE_CONTACTS(写入联系人)
android.permission.GET_ACCOUNTS(查找设备上的帐户)
android.permission.READ_CONTACTS(读取联系人)
group:android.permission-group.PHONE(手机拨号) android.permission.READ_CALL_LOG(读取通话记录)
android.permission.READ_PHONE_STATE(读取电话状态)
android.permission.CALL_PHONE(拨打电话)
android.permission.WRITE_CALL_LOG(修改通话记录)
android.permission.USE_SIP(SIP视频服务)
android.permission.PROCESS_OUTGOING_CALLS(程序监视,修改或放弃拨出电话)
com.android.voicemail.permission.ADD_VOICEMAIL(允许应用程序添加系统中的语音邮件)
group:android.permission-group.CALENDAR(日历) android.permission.READ_CALENDAR(读取日历)
android.permission.WRITE_CALENDAR(修改日历)
group:android.permission-group.CAMERA(相机) android.permission.CAMERA(获取拍照权限)
group:android.permission-group.SENSORS(传感器) android.permission.BODY_SENSORS(获取传感器权限)
group:android.permission-group.LOCATION(定位) android.permission.ACCESS_FINE_LOCATION(通过gps获取定位权限)
android.permission.ACCESS_COARSE_LOCATION(通过wifi和移动基站获取定位权限)
group:android.permission-group.STORAGE(内存卡) android.permission.READ_EXTERNAL_STORAGE(读取内存卡)
android.permission.WRITE_EXTERNAL_STORAGE(写内存卡)
group:com.sina.weibo.permission-group() com.sina.weibo.permission.USER
group:android.permission-group.MICROPHONE(麦克风) android.permission.RECORD_AUDIO(录音权限)
group:android.permission-group.SMS(短信) android.permission.READ_SMS(读取短信)
android.permission.RECEIVE_WAP_PUSH(接收WAP PUSH信息)
android.permission.RECEIVE_MMS()
android.permission.RECEIVE_SMS(接收短信权限)
android.permission.SEND_SMS(发送短信)
android.permission.READ_CELL_BROADCASTS(获取小区广播)



2.今天我就拿定位来举个例子来说下Android6.0以后这些权限的申请

首先我们要判断权限是否开启,开启的话我们就直接去执行我们需要执行的方法,没有开启的话我们就要提示用户去开启

if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED){//未开启定位权限
            //开启定位权限,200是标识码
            ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},200);
        }else{
            startLocaion();//开始定位
            Toast.makeText(MainActivity.this,"已开启定位权限",Toast.LENGTH_LONG).show();
        }

3.我们需要写一个回调的方法,onRequestPermissionsResult,在我们需要申请权限的时候就会执行这个回调

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode){
            case 200://刚才的识别码
                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){//用户同意权限,执行我们的操作
                    startLocaion();//开始定位
                }else{//用户拒绝之后,当然我们也可以弹出一个窗口,直接跳转到系统设置页面
                    Toast.makeText(MainActivity.this,"未开启定位权限,请手动到设置去开启权限",Toast.LENGTH_LONG).show();
                }
                break;
                default:break;
        }
    }
4.好了,写到这里就已经完成了


扫描二维码关注公众号,回复: 1374454 查看本文章



猜你喜欢

转载自blog.csdn.net/qq1271396448/article/details/80527344