首页 > 解决方案 > getExternalStorageDirectory 在 Android 10 中已弃用

问题描述

我正在尝试使用 ARCore 和 Kotlin 生成文件名来保存 AR 模型。

自 Android 10 起,Environment 方法已因隐私问题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"
    }

标签: androidkotlinandroid-external-storageandroid-10.0android-storage

解决方案


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);
    }
}

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


推荐阅读