MHM*_*MHM 32 android android-file android-external-storage
我为此感到疯狂:
Log.d("STATE", Environment.getExternalStorageState());
File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "work_data");
Log.d("PATH", f.getAbsolutePath());
if (!f.exists()) {
Log.d("MAKE DIR", f.mkdirs() + "");
}
Run Code Online (Sandbox Code Playgroud)
输出日志如下所示:
STATE mounted
PATH /mnt/sdcard/DCIM/work_data
MAKE DIR false
Run Code Online (Sandbox Code Playgroud)
我确保添加正确的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么它无法创建该文件夹.我也mkdir()
一步一步地使用,但结果是一样的.请帮我.我用Google搜索了这么多,并且在这个愚蠢的事情上花了至少两天时间.谢谢你的帮助!!
编辑:
大家好!我添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
了<application>
标签.这是我的错!但是谢谢大家的回复.
小智 58
我遇到了同样的问题,我确信我已将权限标记放在正确的位置,但mkdirs还没有工作,我的系统是Android 6.0,我现在解决它,你可以检查如下:
小智 30
我有同样的问题,我已经搜索了一周,试图找到答案.我想我找到了它,我觉得这很容易,你必须把使用许可声明放在正确的地方......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.name"
android:versionCode="1"
android:versionName="0.2">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
当我在<application> </ application>部分中使用它时,它不起作用.
Cla*_* Ku 15
我知道这是一个老帖子,但也许我的答案可以帮助某人.
经过几天处理这个问题后,我意识到,当手机连接到PC时,它总是在开发过程中,SD卡不可用.因此,无法尝试在其上创建目录或文件.为了使其"更容易",根据被测电话,它似乎表现不同.
我知道这听起来很愚蠢,但是花费很多时间,其他人可能会节省.
Pri*_*ary 13
仅当您的targetSdkVersion 为 29 或以上时适用
Environment.getExternalStorageDirectory() 在 API 级别 29 中已弃用。
要获得相同的功能,请使用此行
File mediaStorageDir = context.getExternalFilesDir(null);
Run Code Online (Sandbox Code Playgroud)
如果您已检查所有可能的错误,请尝试此修复程序。
已经在这里回答 - /sf/answers/4303605421/
小智 9
在OnCreate()中添加这行代码
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
Run Code Online (Sandbox Code Playgroud)
mkdirs() 仅在创建目录时返回 true。如果它已经就位,它应该返回false。所以我敢打赌这个目录已经存在。
答案可能为时已晚,但如果您已经允许 R/W 权限(运行时权限)并且仍然不起作用,请在您的AndroidManifest.xml 中添加下面提到的行
<application
........
........
android:requestLegacyExternalStorage="true">
Run Code Online (Sandbox Code Playgroud)
注意:如果您的目标是 Android 10+,这必须是必需的
归档时间: |
|
查看次数: |
33103 次 |
最近记录: |