Android 11 范围存储权限

android

1个回答

写回答

13656212168

2025-07-10 00:29

+ 关注

Android
Android

Android 11 范围存储权限

Android 11在存储权限方面进行了一些重要的改变和限制。这些改变旨在增强用户隐私和数据保护。在过去,Android应用程序可以自由访问设备上的文件和文件夹,但这也导致了一些潜在的安全风险。为了解决这个问题,Android 11引入了一种新的存储权限模型,称为范围存储权限。

什么是范围存储权限?

范围存储权限是一种更为严格的权限模型,它限制了应用程序对外部存储中文件的访问。在Android 11中,应用程序只能访问其自己创建的目录和文件,以及用户明确授权给应用程序的其他目录和文件。换句话说,应用程序无法自由地访问设备上的所有文件和文件夹。

如何请求范围存储权限?

要请求范围存储权限,开发人员需要向用户解释为什么应用程序需要访问外部存储,并在运行时请求权限。请求范围存储权限的过程与请求其他权限的过程类似。以下是一个示例代码,演示了如何请求范围存储权限:

kotlin

val permission = Manifest.permission.READ_EXTERNAL_STORAGE

val requestCode = 100

if (ContextCompat.checkSelfPermission(this, permission)

!= PackageManager.PERMISSION_GRANTED) {

if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {

// 用户之前拒绝了权限请求,解释为什么应用程序需要访问外部存储

// 可以显示一个对话框或其他形式的解释

} else {

// 请求范围存储权限

ActivityCompat.requestPermissions(this, arrayOf(permission), requestCode)

}

}

如何访问范围存储权限?

一旦用户授予了范围存储权限,应用程序就可以使用新的API来访问外部存储中的文件。以下是一个示例代码,演示了如何使用范围存储权限访问外部存储中的文件:

kotlin

val contentResolver = context.contentResolver

val uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI

val projection = arrayOf(

MediaStore.Images.Media._ID,

MediaStore.Images.Media.DISPLAY_NAME,

MediaStore.Images.Media.DATE_ADDED

)

val sortOrder = "${MediaStore.Images.Media.DATE_ADDED} DESC"

val cursor = contentResolver.query(uri, projection, null, null, sortOrder)

if (cursor != null && cursor.moveToFirst()) {

do {

val id = cursor.getLong(cursor.getcolumnIndexOrThrow(MediaStore.Images.Media._ID))

val name = cursor.getString(cursor.getcolumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME))

val dateAdded = cursor.getLong(cursor.getcolumnIndexOrThrow(MediaStore.Images.Media.DATE_ADDED))

// 在这里处理获取到的文件信息

} while (cursor.moveToNext())

cursor.close()

}

范围存储权限的优势和局限性

范围存储权限的引入为用户隐私和数据保护提供了更强的保障。它限制了应用程序对外部存储中敏感文件的访问,防止了恶意应用程序的滥用。然而,范围存储权限也带来了一些局限性。由于应用程序只能访问自己创建的目录和用户明确授权的目录,一些应用程序可能无法使用某些功能或与其他应用程序进行兼容。

Android 11的范围存储权限是一项重要的安全改进,旨在增强用户隐私和数据保护。开发人员应该遵守新的权限模型,并向用户解释为什么应用程序需要访问外部存储。同时,开发人员还应该熟悉新的API,以便正确地使用范围存储权限来访问外部存储中的文件。这将有助于建立用户信任和保护用户的数据安全。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号