注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

罔少年

QQ 332256483

 
 
 

日志

 
 

Android 动态权限  

2017-02-08 09:51:02|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

什么是动态权限

从Android6.0(API:23)后,应用的敏感权限不再是安装的时候授予,而是在运行到某个功能点时,需要权限后跳出授权页面。

敏感权限有哪些

敏感权限权限总共9组,每组只要有一个权限申请成功,则默认整组权限可以使用:

(1)group:android.permission-group.CALENDAR(日历权限)

permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR

(2) group:android.permission-group.CAMERA(相机权限)

permission:android.permission.CAMERA

(3) group:android.permission-group.CONTACTS(联系人权限)

permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS    
permission:android.permission.READ_CONTACTS

(4) group:android.permission-group.PHONE(电话权限)

permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE 
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS

(5) group:android.permission-group.SENSORS(传感器权限)

permission:android.permission.BODY_SENSORS

(6)group:android.permission-group.LOCATION(位置权限)

permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION

(7)group:android.permission-group.STORAGE(存储权限)

permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE

(8) group:android.permission-group.MICROPHONE(麦克风权限)

permission:android.permission.RECORD_AUDIO

(9) group:android.permission-group.SMS(短信权限)

permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS

6.0后如何使用(比如相机权限)

1、判断Android版本

public void showCamera(View view) {
//首先判断android版本
if (Build.VERSION.SDK_INT >= 23) {
// 检查相机权限是否已经获取
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
// 相机权限没有被授权,请求权限
requestCameraPermission();
}
else {
// 相机权限已经授权直接使用
showCameraPreview();
}
}
}

2、请求相机权限

private void requestCameraPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA)) {
Snackbar.make(mLayout, R.string.permission_camera_rationale,
Snackbar.LENGTH_INDEFINITE)
.setAction(R.string.ok,
new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityCompat.requestPermissions(MainActivity.
this,
new String[]{Manifest.permission.CAMERA},
REQUEST_CAMERA);
}
})
.show();
}
else {
// 相机权限没有授权,请求回调
ActivityCompat.requestPermissions(
this, new String[]{Manifest.permission.CAMERA},
REQUEST_CAMERA);
}
// END_INCLUDE(camera_permission_request)
}

3、权限被拒绝后回调函数onRequestPermissionsResult

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_CALL_PHONE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
callDirectly(mobile);
}
else {
// Permission Denied
Toast.makeText(MainActivity.
this, "CALL_PHONE Denied", Toast.LENGTH_SHORT)
.show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

  评论这张
 
阅读(59)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017