Как создать папку приложения со спецификацией c в галерее android и сохранить изображения, которые также можно использовать в API ниже 29 и выше 29 - PullRequest
0 голосов
/ 20 апреля 2020

Я строю pp для редактирования фотографий. я хочу создать папку своего приложения в галерее, и когда пользователь нажимает кнопку «Сохранить», изображения должны быть сохранены в папку, указанную в моем приложении в галерее, я делаю это с помощью хранилища мультимедиа с помощью этой строки values.put ("_ data", file.getAbsolutePath ()) ;, НО проблема в том, что эти изображения в галерее не отображаются, они показывают ошибку типа 404, я думаю, что это проблема с разрешениями, но я сохраняю файл в папке, указанной в моем приложении, с помощью getExternalFileDir (), чем я показываю эту папку в галерее, почему существует проблема с правами доступа, так как я работаю в папке моего приложения, указанном c, здесь я делюсь своим кодом

    String resultPath = getExternalFilesDir(null)+ getString(R.string.directory) + 
    System.currentTimeMillis() + ".jpg";

       File file =  new File(resultPath);
        file.mkdirs();
        try {
            OutputStream fileOutputStream = new FileOutputStream(file);
            savedBitmap.compress(CompressFormat.JPEG, 100, fileOutputStream);
            fileOutputStream.flush();
            fileOutputStream.close();
        } catch (IOException e2) {
            e2.printStackTrace();
        }
        savedBitmap.recycle();


        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "Photo");
        values.put(MediaStore.Images.Media.DESCRIPTION, "Edited");
        values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis ());
        values.put(MediaStore.Images.ImageColumns.BUCKET_ID, file.toString().toLowerCase(Locale.US).hashCode());
        values.put(MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, file.getName().toLowerCase(Locale.US));
        values.put("_data", file.getAbsolutePath());

        ContentResolver cr = getContentResolver();
        cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
...