如何在Android上添加写入文件权限

m7m*_*m7m 13 java android

我想使用以下内容写入文件:

 BufferedWriter buf = new BufferedWriter(new FileWriter("test2"));
 buf.write(mytext);
 buf.close();
Run Code Online (Sandbox Code Playgroud)

但我得到了这个消息 (file test2 read only)

我怎样才能获得写入权限?

Not*_*Man 29

你在AndroidManifest.xml文件中有这个吗?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

此外,此链接包含有关读取和写入文件的所有信息:

http://www.anddev.org/working_with_files-t115.html


Pre*_*h P 11

这个问题已经很老了,但无论如何我都会写这个答案,因为这是您搜索“在 android 中写入文件权限”时的最佳结果

NotACleverMan 的回答是有效的,但自 MarshMallow 发布以来,必须要求用户手动提供权限。因此,必须向用户呈现一个对话,他可以在其中明确拒绝或授予使用某些功能的权限。

取自 Android 开发者文档

从 Android 6.0(API 级别 23)开始,用户在应用运行时授予应用权限,而不是在安装应用时授予权限。这种方法简化了应用安装过程,因为用户在安装或更新应用时不需要授予权限。它还使用户可以更好地控制应用程序的功能;例如,用户可以选择让相机应用程序访问相机而不是设备位置。用户可以随时通过转到应用程序的设置屏幕来撤销权限。

因此,首先您必须将其包含在清单文件中

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

此后,当您需要访问指定资源时,必须向用户请求权限

ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.WRITE_STORAGE},
            YOUR_PERMISSION_STATIC_CODE_IDENTIFIER);
Run Code Online (Sandbox Code Playgroud)

有关实现的更多详细信息,请参阅