安卓开发 目前sdk>=31 申请权限用法
时间: 2024-11-03 21:12:24 浏览: 22
在Android SDK版本大于等于31 (Android 11) 的应用开发中,权限管理变得更加严格,以保护用户的隐私。如果你需要申请权限,比如读取联系人信息,你需要在运行时请求权限,而不是像以前那样在AndroidManifest.xml文件中直接声明。
以下是步骤:
1. **动态权限检查**:
使用`ContextCompat.checkSelfPermission()`方法检查应用是否已经获得了某项权限。如果尚未获得,你需要用户授权。
```java
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// 请求权限
}
```
2. **请求权限**:
如果权限缺失,通过`ActivityCompat.requestPermissions()`方法发起请求。记得在用户同意后更新权限状态,可以使用`onRequestPermissionsResult()`回调。
```java
ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
```
3. **处理结果**:
用户接受或拒绝请求后,你需要处理`onRequestPermissionsResult()`方法中的结果,根据用户的选择决定如何继续操作。
```java
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,可以访问联系人了
} else {
// 拒绝或权限未授予,这里可以显示错误消息或采取其他备用方案
}
return;
}
}
}
```
阅读全文