当前位置: 首页 > 知识库问答 >
问题:

授予写入权限,但在执行时被拒绝

沈皓君
2023-03-14

我在清单中添加了对外部存储设备的写访问权限,并在我的Android手机中授予了这些权限。如果他们不存在,我甚至会在执行时要求他们。

然而,我总是得到这个例外:

Java语言io。FileNotFoundException:/storage/simulated/03b3d97bd-5186-4506-97dc-9994b7ce0761(权限被拒绝)

你知道为什么吗?

try {

    if (Build.VERSION.SDK_INT >= 23) {
        int permissionCheck = ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }


    OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory() + image_uuid);
    byte[] buffer = new byte[1024];
    int bytesRead;
    BitmapDrawable bitmapDrawable = (BitmapDrawable) temp.getDrawable();
    etc. etc. etc.

在清单文件中:

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

共有1个答案

庞书
2023-03-14

在获得权限之前,您在sd卡中写入文件。您必须使用以下代码等待授予权限的结果:

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE/*1 in here*/: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted
                // write file here
            } else {
                // permission denied
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request.
    }
}

请参见此处

 类似资料:
  • 我想使用公共外部存储在设备中写入映像。因此,我有1)在清单中写入权限标签,2)在需要时使用请求权限。但我仍然有这个例外:。 为什么?我已经读过了https://developer.android.com/guide/topics/permissions/overview#normal-很危险,但这不能回答我的问题。 我已授予Android设备的存储权限。因此,我的条件if(permissionCh

  • 我分配一个角色权限来创建数据库。相同的角色被分配给登录用户,但是当我试图使用分配角色的登录用户创建新数据库时,我得到权限拒绝错误。 无法执行语句。权限拒绝,数据库主,所有者dbo。运行此命令需要以下权限:CREATE DATABASE。赛贝斯错误代码=10331严重级别=14,状态=3,事务状态=0第1行 我用15.5分和16分试了一下。我做错什么了吗?我们需要考虑其他参数吗?我经历了这次讨论 h

  • 我添加了使用权限,包括WRITE_EXTERNAL_STORAGE,android.permission.相机,READ_EXTERNAL_STORAGEAndroidManifest.xml. 当我在Nexus6(API 24)中运行我的应用程序时,它向我抛出了以下错误: java.io.IOException:权限被拒绝 这是我的代码: 如何在权限相机运行时打开之前使用它?

  • 我有一个针对SDK28的Android应用程序,所以我有处理的权限。我检查是否设置了,但当Exoplayer尝试读取文件(我验证该文件确实存在)时,我看到 com.google.android.exoplayer2.upstream.filedatasource$filedatasourceException:java.io.fileNotfoundexception:/storage/emula

  • 问题内容: 我正在尝试使用Python在Windows OS上创建并写入一个临时文件。我已经使用Python模块创建了一个临时文件。 但是当我去写那个临时文件的时候我得到了一个错误。我不可以写临时文件吗?难道我做错了什么?如果要创建并写入临时文件,应该如何在Python中进行操作?为了安全起见,我想在temp目录中创建一个临时文件,而不是在本地(在.exe正在执行的目录中)中创建一个临时文件。 问

  • 在这一点上我得到了警告: 如何让它保存文件?当我在Eclipse上创建它时,这是可行的,但是现在我更新并移到了Android Studio中,它似乎坏了一些东西。