我想在外部存储中创建一个目录,但我无法创建它。
这是我的代码:
String path = Environment.getExternalStorageDirectory().toString();
File dir = new File(path,"/appname/media/appimages/");
if (!dir.isDirectory()) {
dir.mkdirs();
}
File file = new File(dir, "image" + ".jpg");
String imagePath = file.getAbsolutePath();
//scan the image so show up in album
MediaScannerConnection.scanFile(this,
new String[] { imagePath }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
}
});
File file1 = new File(Environment.getExternalStorageDirectory().getPath() + "/MeaVita");
file1.mkdir();
// imageRoot.mkdirs();
Log.d("directory",dir.getAbsolutePath().toString());
我尝试使用mkdirs()和mkdir()。但它们都不起作用。我无法在路径storage / emulated / 0 /。
中看到该文件夹我在Android 23.0上运行此操作,我也添加了权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
有人知道我的代码出了什么问题吗?
提前致谢。
答案 0 :(得分:1)
使用某些权限,您需要在运行时检查用户是否接受它们,您可以通过创建如下方法来执行此操作:
private void checkFilePermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int hasWriteExternalStoragePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_ASK_PERMISSIONS);
}
}
}
然后在访问存储空间之前使用它
答案 1 :(得分:0)
我检查了..它是一个权限问题..快速解决方案切换到22而不是23.或者您需要处理运行时权限请参阅:link