[getExternalStorageDirectory在Android 10中已弃用

问题描述 投票:1回答:3

我正在尝试生成文件名以使用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"
    }
android kotlin android-external-storage android-10.0 android-storage
3个回答
0
投票
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);
    }
}

此方法将返回文件的完整路径。


0
投票

可以尝试此代码段

 File cameraDir =new File( 
    Environment.getExternalStoragePublicDirectory(
  Environment.DIRECTORY_DCIM), "Camera");

 If(cameraDir.exists()){
      // return the path.. 
 }else{
     //Create dir with mkdirs method
}

还添加读/写外部存储的权限


0
投票

代替使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),现在可以使用getExternalFilesDir(Environment.DIRECTORY_PICTURES)

Here是一些可能对您有帮助的答案。

© www.soinside.com 2019 - 2024. All rights reserved.