android - 将位图图像保存到画廊 android 10 的特定位置

标签 android image save android-10.0

我正在使用这段代码:

MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "title" , "description");
它运行良好。
问题:
  • 它正在创建一个名为 的文件夹。 《图片》自动在图库中。但我想要不同的名称,例如我的应用程序的名称。
  • MediaStore 的 insertImage() 函数为 折旧 在安卓 10 中:

  • public static String insertImage (ContentResolver cr, String imagePath, String name, String description)


    This method was deprecated in API level 29. inserting of images should be performed using MediaColumns#IS_PENDING, which offers richer control over lifecycle.


    我已阅读文档,但实际上并不了解 IS_PENDING 以及如何使用它。

    最佳答案

    试试这个代码: -

    private void saveImage(Bitmap bitmap, @NonNull String name) throws IOException {
        boolean saved;
        OutputStream fos;
    
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            ContentResolver resolver = mContext.getContentResolver();
            ContentValues contentValues = new ContentValues();
            contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name);
            contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/png");
            contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, "DCIM/" + IMAGES_FOLDER_NAME);
            Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
            fos = resolver.openOutputStream(imageUri);
        } else {
            String imagesDir = Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_DCIM).toString() + File.separator + IMAGES_FOLDER_NAME;
    
            File file = new File(imagesDir);
    
            if (!file.exists()) {
                file.mkdir();
            }
    
            File image = new File(imagesDir, name + ".png");
            fos = new FileOutputStream(image);
    
        }
    
        saved = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();
    }
    

    关于android - 将位图图像保存到画廊 android 10 的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63776744/

    相关文章:

    java - Google App Engine (java) 中的 ImageService 所需的 ARGB 格式是什么

    c# - 如何编写处理单个对象和集合的通用 Save() 方法?

    android - 使用带有 ionic 和电容器的 https 加载 webview

    android - 播放服务和 AdMob : Expected 4132500 but found 4242000

    java - 为 Android 项目选择 ORM(最低 API 级别 7)

    javascript - JS - 如何将Image对象变成灰度并显示

    java - 如何在 Graphics 方法 drawImage() 中使用 ImageObserver

    python - 如何使用 python 2.7 使用 tk 将文本保存到 txt 文件中

    java - 将输出保存到数组,然后写入 .csv 文件

    Android:从顶部开始循环进度条(270°)