android - Environment.getExternalStorageDirectory().canWrite() 返回 false

标签 android android-external-storage

我检查了下面的代码

String state = Environment.getExternalStorageState();
                    if (Environment.MEDIA_MOUNTED.equals(state)) {
                        Log.d("StatusActivity", "sdcard mounted and writable");
                    }
                    else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
                        Log.d("StatusActivity", "sdcard mounted readonly");
                    }
                    else {
                        Log.d("StatusActivity", "sdcard state: " + state);
                    }

输出显示 sdcard 已安装且可写

但是 Environment.getExternalStorageDirectory().canWrite() 总是返回 false。任何人都可以建议吗?

最佳答案

您的应用需要 WRITE_EXTERNAL_STORAGE 权限。此外,如果您编写的文件仅供您的应用程序使用,则应将其存储在 Context.getExternalFilesDir() 中,以防止将您的应用程序文件散布到整个公共(public)存储空间。如果您正在编写公共(public)文件,则应将其存储在 Environment.getExternalStoragePublicDirectory() 中。

关于android - Environment.getExternalStorageDirectory().canWrite() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19306485/

相关文章:

android - ImageView: onDraw方法绘制 "behind"图片背景,不在顶部

android - 如何在独立的Android SDK中使用Gradle?

android - 如何在 Android 中的 facebook 好友墙上发布消息

android - 在外部存储中创建新文件的权限被拒绝

android.permission.WRITE_MEDIA_STORAGE 错误

android - 如果 gradle-android-test-plugin 测试失败,不要让 gradle 构建失败

java - 从 edittext 获取数值的另一种方法

android - 无法在内部存储中找到保存到文本文件的数据,如何将文件保存在内部存储 android studio 中?

android获取所有设备的所有外部存储路径