Android 运行时权限

Android 6.0 及以后,如果你的应用需要用到一些危险权限,那么这些权限必须手动申请
具体危险权限有哪些,可以通过下面这篇文章自行查询到:
使用 adb 命令列出设备所有危险权限

例如,读写文件就涉及到两个危险权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

步骤1:声明权限

首先,你必须在 AndroidManifest.xml 文件中声明要用到的权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <!-- 读写文件 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

</manifest>

对于危险权限来说,声明了并不意味着你就拥有这些权限,你还必须手动申请。

步骤2:查询是否有权限

在读写文件之前,你必须检查你是否拥有读写文件的权限。
通过 ContextCompatcheckSelfPermission 函数就可以检查是否拥有指定权限。

例如:

ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)

第一个参数是 Context
第二个参数是需要检查的权限名称。
该函数返回一个 Int 类型的值,其结果只有两种:PackageManager.PERMISSION_GRANTEDPackageManager.PERMISSION_DENIED

  • PERMISSION_GRANTED:有此权限
  • PERMISSION_DENIED:无此权限

综上所述,我们可以通过判断来处理相应的逻辑:

if (ContextCompat.checkSelfPermission(
        this,
        Manifest.permission.READ_EXTERNAL_STORAGE
    ) == PackageManager.PERMISSION_GRANTED
) {
   
    Log.d(TAG, "有权限")
} else {
   
    Log.d(TAG, "无权限")
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y1笑而过song

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值