在Android6.0以前的版本中 ,应用所需的授权信息会在安装时候要求用户授予,这种情况会造成店大欺客的现象,比如微信申请了一大堆权限,作为用户根本不可能拒绝安装,只好乖乖上缴权限,这样对用户的隐私是非常不利的。
不过在之后的系统中安卓开发团队加入了运行时权限的功能,将权限分成了危险权限和普通权限,危险权限必须在使用时申请,经过用户同意才能继续使用,在Android中共有11组30个危险权限,同组权限是一体的。其余的权限则是普通权限,系统会自动授予。
普通权限只需要在AndroidManifest中声明就可以使用了。
运行时权限
应用需要使用危险权限时候,需要向用户请求授权,这里以申请打电话为例子,具体操作如下
button.setOnClickListener(view -> {
//通过ContextCompat的checkSelfPermission方法检测自己是否拥有这个权限
if (ContextCompat.checkSelfPermission
(MainActivity.this, Manifest.permission.CALL_PHONE)
!= PackageManager.PERMISSION_GRANTED) {
//如果没有,则申请这个权限,申请结束之后会回调onRequestPermissionsResult方法
ActivityCompat.requestPermissions(MainActivity.this,
new Strin