Android请求权限

本文介绍了Android系统中的权限类型,如正常权限和危险权限。详细讲解了如何在AndroidManifest.xml中声明权限,如何使用ActivityCompat.requestPermissions()请求危险权限,以及通过ContextCompat.checkSelfPermission()检查权限状态。此外,还提到了用户拒绝权限后如何处理的问题。
摘要由CSDN通过智能技术生成

安卓系统权限分为两类:正常权限和危险权限。正常权限不会给用户隐私带来风险,只需在 AndroidManifest.xml 清单中列出该权限,系统将自动授予该权限。

而危险权限会授予应用访问用户数据,你首先要在清单中列出,然后再在代码中请求用户允许授予该权限。

1、声明权限

首先必须要在 AndroidManifest.xml 文件中列出所需权限,在该文件里的 manifest 标签中添加如同下面格式的权限声明。(文件位置在:Android > app > manifest > AndroidManifest.xml)

<!-- 权限声明列表 AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET"/><!--网络访问-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/><!--获取手机状态-->

2、请求权限

其中的 INTERNET 网络访问权限为正常权限,是不需要额外请求用户授权的,系统将自动允许该权限。而其它危险权限就需要用户明确授予,使用 ActivityCompat.requestPermissions() 方法来请求一个或多个权限。

// 申请单个权限
ActivityCompat.requestPermissions(this, new String[]{
   
    Manifest.permission.READ_PHONE_STATE
}, 1);

3、检查权限授予状态

在请求用户授予权限之前使用 ContextCompat.checkSelfPermission() 方法检查某个权限的授予状态,它将返回常量值。你还可以使用 List 接口来整合未授予的权限以便待会集中申请。

// 无权限:PackageManager.PERMISSION_DENIED
// 有权限:PackageManager.PERMISSION_GRANTED

// 检查权限是否已经授予
int PermissionState = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
if(PermissionState == PackageManager.PERMISSION_GRANTED){
   
    Toast.makeText(this, "已授权!", Toast.LENGTH_LONG).show();
}else if(PermissionState == PackageManager.PERMISSION_DENIED){
   
    Toast.makeText(this, "未授权!", Toast.LENGTH_LONG).show();
}

4、完整代码示例

【代码文件】activity_main.xml

<!-- activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值