📜  写存储权限android (1)

📅  最后修改于: 2023-12-03 15:07:07.722000             🧑  作者: Mango

写存储权限 Android

在Android应用程序中,访问设备存储是常见的任务。然而,在Android 6.0(API级别23)及更高版本中,需要显式请求权限才能访问设备存储。本文将介绍如何请求并获取写存储权限。

概览

Android提供了一种方便的方法来请求权限:使用ActivityCompat.requestPermissions()方法。该方法接收两个参数:

ActivityCompat.requestPermissions(Activity activity, String[] permissions, int requestCode)
  • activity:当前Activity实例。
  • permissions:所请求的权限。
  • requestCode:标识请求的代码,通常可以设置为自定义整数值。

requestPermissions()方法定义了一个系统对话框,询问用户是否同意授予权限。用户可以选择授予权限或拒绝。如果权限被授予,onRequestPermissionsResult()方法将被调用,以通知应用程序授予了什么权限。

onRequestPermissionsResult()方法中,应将requestCode参数与请求代码相比较,以确定哪个权限已被授予。如果权限被授予,则应执行请求权限后续的代码。如果权限被拒绝,则应提示用户此功能无法使用。

请求写存储权限

以下是请求写存储权限的代码示例:

private static final int REQUEST_WRITE_STORAGE = 112;

private void requestWriteStoragePermission() {
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                REQUEST_WRITE_STORAGE);
    } else {
        // Permission has already been granted
        performWrite();
    }
}

@Override
public void onRequestPermissionsResult(int requestCode,
        String[] permissions, int[] grantResults) {
    if (requestCode == REQUEST_WRITE_STORAGE) {
        if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            performWrite();
        } else {
            Toast.makeText(this, "Write permission denied", Toast.LENGTH_SHORT).show();
        }
    }
}

private void performWrite() {
    // Write to storage
}

首先,定义一个整数常量REQUEST_WRITE_STORAGE,表示我们请求的是写入存储权限。在requestWriteStoragePermission()方法中,检查应用程序是否已授予写存储权限。如果没有授予权限,则调用ActivityCompat.requestPermissions()方法请求写存储权限。如果权限已被授予,则执行performWrite()方法来写入存储。

onRequestPermissionsResult()方法中,检查请求代码是否为REQUEST_WRITE_STORAGE,并检查权限是否已被授予。如果权限已授予,则执行performWrite()方法以执行写入存储操作。否则,会显示一个短暂的Toast消息,提示用户权限被拒绝。

结论

本文介绍了如何使用ActivityCompat.requestPermissions()方法请求写存储权限,并使用onRequestPermissionsResult()方法处理授权结果。现在您已经了解了权限请求的基础知识,可以在您的应用程序中使用此技术来请求其他权限。