gpt4 book ai didi

java - 如何在 Android Q (API 29) 上将文件保存到公共(public)(外部)存储?

转载 作者:行者123 更新时间:2023-11-30 05:31:23 25 4
gpt4 key购买 nike

我一直在使用外部存储来保存不同类型的文件。该文件需要对用户可见。现在,从 Android Q 开始,getExternalStoragePublicDirectory() 方法已被弃用 getExternalStoragePublicDirectory(docs) .

我使用了以下代码:

File externalFilesDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "DirectoryName");

是否有另一种方法来保存用户可见的文件?

最佳答案

您需要添加对 Android Q 的检查。假设您要将图像保存在公共(public)下载文件夹中。

try{
OutputStream fos;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver = context.getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, fileName);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS);
Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
fos = resolver.openOutputStream(Objects.requireNonNull(imageUri));
} else {
String imagesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
File image = new File(imagesDir, fileName);
fos = new FileOutputStream(image);
}
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
Objects.requireNonNull(fos).close();
}catch (IOException e) {
// Log Message
}

关于java - 如何在 Android Q (API 29) 上将文件保存到公共(public)(外部)存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57475704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com