【第一行代码】RuntimePermissionTest

简介

Android 的权限机制是用来保护用户安全以及隐私,但是在 6.0 之前这些权限都只能在安装的时候申请,如果不同意的话就不安装应用。

但是这样会造成有一些 app 的用户很多,并且用户对此类 app 依赖度高,这些 app 会在安装的时候申请很多的权限,但其实只是想窃取用户更多的信息。

Android 6.0 系统引进运行时权限这个功能,能够使得 app 不需要在安装的时候申请过多的权限。

在运行时申请权限

以打电话为例子

在 AndroidManifest.xml 声明权限

<uses-permission android:name="android.permission.CALL_PHONE" />

在程序运行中检查并申请权限

//判断是否授权
if(ContextCompat.checkSelfPermission(MainActivity.this,
        Manifest.permission.CALL_PHONE) !=
        PackageManager.PERMISSION_GRANTED) {
    //请求授权
    ActivityCompat.requestPermissions(MainActivity.this,
            new String[]{Manifest.permission.CALL_PHONE}, 1);
}else {
    call();
}

重写 onRequestPermissionsResult 函数获取授权结果

@Override
public void onRequestPermissionsResult(int requestCode,
     @NonNull String[] permissions,
     @NonNull int[] grantResults) {
    switch (requestCode) {
        case 1:
            if(grantResults.length > 0 && grantResults[0] == PackageManager.
                    PERMISSION_GRANTED) {
                call();
            }else {
                Toast.makeText(this, "You denied the permission",
                        Toast.LENGTH_SHORT).show();
            }
            break;
            default:break;
    }
}

项目源码下载

Github

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值