android6.0以上动态权限配置

来源:互联网 发布:淘宝买家怎么修改价格 编辑:程序博客网 时间:2024/06/15 20:10
Android 6.0版本(Api 23)推出了很多新的特性, 在开发中突然发现项目运行不起来了报READ_PHONE_STATE错误,获取不到这个权限,可是已经加入了啊
通过网上一系列的查看发现API>=23之后需要动态获取权限
首先我们先在onResume中,也就是页面显示前检查有没有权限,有权限的话进行项目的业务逻辑,没有的则先申请权限
int REQUEST_READ_PHONE_STATE = 0;
@Overrideprotected void onResume() {    super.onResume();    //如果有权限直接执行    if (ContextCompat.checkSelfPermission(getApplicationContext(),            android.Manifest.permission.READ_PHONE_STATE)            == PackageManager.PERMISSION_GRANTED) {
//业务处理
}//如果没有权限那么申请权限 else { ActivityCompat.requestPermissions(LoginActivity.this, new String[]{android.Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE); }}
申请权限的结果通过回调的形式返回
@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {    if (requestCode == this.REQUEST_READ_PHONE_STATE) {        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {           //业务处理        } else {            Toast.makeText(this, "拒绝了权限", Toast.LENGTH_SHORT).show();        }    }    super.onRequestPermissionsResult(requestCode, permissions, grantResults);}
当然在判断有无权限之前也可以先判断一下API版本是否大于等于23,这些就是全部了。
Quit!!!!