我正在尝试生成文件名以使用ARCore和Kotlin保存AR模型。
自Android 10起,出于隐私考虑,不推荐使用环境方法getExternalStoragePublicDirectory()
和getExternalStorageDirectory()
。
什么可以代替以下代码?
private fun generateFileName() : String {
val date = SimpleDateFormat("yyyyMMddHHmmss", java.util.Locale.getDefault()).format(Date())
return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + "CardAR/" + date + "_screenshot.jpg"
}
private File getAbsoluteFile(String relativePath, Context context) {
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
return new File(context.getExternalFilesDir(null), relativePath);
} else {
return new File(context.getFilesDir(), relativePath);
}
}
此方法将返回文件的完整路径。
可以尝试此代码段
File cameraDir =new File(
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM), "Camera");
If(cameraDir.exists()){
// return the path..
}else{
//Create dir with mkdirs method
}
还添加读/写外部存储的权限
代替使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
,现在可以使用getExternalFilesDir(Environment.DIRECTORY_PICTURES)
Here是一些可能对您有帮助的答案。