Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在外部存储器上保存文件_Android - Fatal编程技术网

Android 在外部存储器上保存文件

Android 在外部存储器上保存文件,android,Android,我试图创建一个目录并将一个文件保存到该目录中,我的程序返回该目录已创建,但我无法使用USB端口从PC浏览或使用ES文件资源管理器找到该目录。每次我运行程序时,程序也会返回true(即目录已创建),如果它确实创建了它,那么它应该只在第一次返回true。此外,当我试图在目录中创建一个文件时,它会返回该文件不存在的信息。在清单中,我正在设置用户对外部和内部存储的写入权限。 请说明我做错了什么,为什么我的程序没有实际创建文件夹(或文件)(请注意标记器文件夹路径是storage/simulated/0/D

我试图创建一个目录并将一个文件保存到该目录中,我的程序返回该目录已创建,但我无法使用USB端口从PC浏览或使用ES文件资源管理器找到该目录。每次我运行程序时,程序也会返回true(即目录已创建),如果它确实创建了它,那么它应该只在第一次返回true。此外,当我试图在目录中创建一个文件时,它会返回该文件不存在的信息。在清单中,我正在设置用户对外部和内部存储的写入权限。 请说明我做错了什么,为什么我的程序没有实际创建文件夹(或文件)(请注意标记器文件夹路径是storage/simulated/0/Documents/Saved_Receipts),我假设它最终将成为/my Documents/Saved_Receipts)


布尔成功=假;
String root=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString();
File myDir=新文件(root+“/Saved_receives”);
如果(!myDir.exists()){
success=myDir.mkdir();
textIncoming.append(“创建文件夹”);
}
如果(成功){
textIncoming.append(“创建的文件夹”);
}否则{
textIncoming.append(“文件夹已存在”);
}
随机生成器=新随机();
int n=10000;
n=发电机。下一个(n);
String fname=“DRcpt_u2;.xml”;
File File=新文件(myDir,fname);
如果(file.exists()){
textIncoming.append(“文件存在”);
}
否则{
textIncoming.append(“文件不存在”);
}

您可能正在使用SDK(API)23或更高版本。如果是这样,在清单中声明权限就不够了

您应该能够通过在代码中添加以下块来解决该问题:

if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
        }
        else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }
见:


我正在使用CompileSDK版本-API 19构建应用程序(但在使用Android版本6.0.1的设备上运行)
CompileSDK版本
对此没有影响<代码>目标SDKVersion执行。
if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
        }
        else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }