Android 13 - 如何请求 WRITE_EXTERNAL_STORAGE

android

1个回答

写回答

Wen zhen yan

2025-06-22 16:00

+ 关注

Android
Android

Android 13 - 如何请求 WRITE_EXTERNAL_STORAGE

Android开发中,有时候我们需要访问设备的外部存储空间,以便读取或写入文件。然而,从Android 6.0(API级别23)开始,系统要求我们在运行时动态请求WRITE_EXTERNAL_STORAGE权限,以确保应用程序的安全性和隐私保护。本文将介绍如何在Android 13中请求WRITE_EXTERNAL_STORAGE权限,并提供一个案例代码供参考。

请求WRITE_EXTERNAL_STORAGE权限的步骤

首先,在AndroidManifest.XML文件中添加以下权限声明,以告知系统我们需要访问外部存储空间:

XML

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />

然后,在需要访问外部存储空间的地方,我们需要通过以下代码来请求WRITE_EXTERNAL_STORAGE权限:

Java

// 检查权限是否已被授予

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)

!= PackageManager.PERMISSION_GRANTED) {

// 如果权限未被授予,向用户请求权限

ActivityCompat.requestPermissions(this,

new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},

REQUEST_WRITE_EXTERNAL_STORAGE);

} else {

// 如果权限已被授予,执行相应的操作

performStorageOperation();

}

在上述代码中,我们首先使用ContextCompat.checkSelfPermission()方法检查WRITE_EXTERNAL_STORAGE权限是否已被授予。如果权限未被授予,我们使用ActivityCompat.requestPermissions()方法请求权限。该方法接受三个参数:当前Activity实例、需要请求的权限数组和请求码。请求码可以是任意非负整数,用于标识权限请求的唯一性。

处理权限请求结果

当用户对权限请求做出回应后,系统会调用Activity的onRequestPermissionsResult()方法,我们需要在该方法中处理权限请求的结果。以下是一个示例代码:

Java

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,

@NonNull int[] grantResults) {

if (requestCode == REQUEST_WRITE_EXTERNAL_STORAGE) {

if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

// 用户已授予权限,执行相应的操作

performStorageOperation();

} else {

// 用户拒绝了权限请求,可以给出相应的提示或处理逻辑

showPermissionDeniedToast();

}

}

}

在上述代码中,我们首先检查请求码是否匹配我们之前请求WRITE_EXTERNAL_STORAGE权限时所使用的请求码。然后,我们检查授权结果数组中的第一个元素,如果该元素的值为PackageManager.PERMISSION_GRANTED,表示用户已授予该权限,我们可以执行相应的操作。否则,如果用户拒绝了权限请求,我们可以给出相应的提示或处理逻辑。

Android 13中,请求WRITE_EXTERNAL_STORAGE权限是一项重要的安全措施,以保护用户的隐私和设备的安全。本文介绍了如何在Android 13中请求WRITE_EXTERNAL_STORAGE权限,并提供了相关的代码示例。通过遵循这些步骤,我们可以确保应用程序在访问外部存储空间时遵循最佳的安全实践。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号