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

Android写入文件权限被拒绝[重复]

曹驰
2023-03-14

我试图在android中写入文件,但一直出现以下错误:

java.io.FileNotFoundException: /storage/emulated/0/Notes/TestFile.txt(权限拒绝)

搜索此网站可以简单地解决此问题,即向应用程序清单文件添加WRITE\u EXTERNAL\u存储,但这对我不起作用。我一直在犯同样的错误。

try {
                File root = new File(Environment.getExternalStorageDirectory(), "Notes");
                if (!root.exists()) {
                    root.mkdirs();
                }
                File gpxfile = new File(root, "TestFile.txt");
                FileWriter writer = new FileWriter(gpxfile);
                writer.append("Hello World");
                writer.flush();
                writer.close();
                Toast.makeText(getApplicationContext(), "Saved", Toast.LENGTH_SHORT).show();
            } catch (IOException e) {
                e.printStackTrace();
            }
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">

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

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>

共有3个答案

董翰墨
2023-03-14

修复了它,我必须在我写入文件的地方使用此代码请求权限:

            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    1);

            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    1);

在按钮单击函数中写入文件的完整代码如下所示:

          ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    1);

            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    1);




            try {
                File root = new File(Environment.getExternalStorageDirectory(), "Notes");
                if (!root.exists()) {
                    root.mkdirs();
                }
                File gpxfile = new File(root, "TestFile.txt");
                FileWriter writer = new FileWriter(gpxfile);
                writer.append("Hello World");
                writer.flush();
                writer.close();
                Toast.makeText(getApplicationContext(), "Saved", Toast.LENGTH_SHORT).show();
            } catch (IOException e) {
                e.printStackTrace();
            }
孟安民
2023-03-14

如果目标sdk等于或大于mashmallow版本,则必须请求运行时权限

你可以在这里查看

https://developer.android.com/training/permissions/requesting

东方河
2023-03-14

您在AndroidManifest.xml中提到了权限,但尚未从用户授予。您需要通过Android活动中的用户授予WRITE_EXTERNAL_STORAGE权限。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }

下次启动active时,授予它权限,然后您可以访问外部存储。请注意,这将只授予写访问权限,而不是读访问权限。

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

  • 我试图用docker运行一个简单的命令,读取我的主目录中的文件,并在本地机器上的同一目录中写入输出文件(

  • 在android studio中运行应用程序时,我遇到了权限被拒绝的问题。在此之前,我需要声明,我的队友可以运行代码并弹出数据,但我,我们都使用相同的代码和版本,但我使用的是mac,他们使用的是win系统。 以下是logcat信息: 下面是AndroidMainfest文件:For tools sLtaretApi="31"我尝试删除并运行没有任何更改 有人能给我一些解决这个问题的建议吗?感谢任何

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

  • 正如您从标题中注意到的,我在Android中将文件写入SD卡时遇到了问题。我检查了这个问题,但它对我没有帮助。我想在SD卡上的公共空间中编写文件,以便任何其他应用程序都可以读取它。 首先,我检查SD卡是否已安装: 然后,我运行以下代码: 我有: 在我的AndroidManifest中。xml。 确切的错误是: 我正在模拟器上测试我的代码(模拟Nexus5 API 23)。我所需的最低SDK版本是1

  • 同时运行docker的服务 YML文件: DockerFile: 来自rabbitmq:3-management-alpine 抄袭/配置/ampq/devhost 我使用了这个命令:docker-compose-fdocker-compose.yml--build ampq 请帮我解决这个问题