前言:
我们都知道现在手机系统已经到了很高的版本,在我们的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 查看本文章