Можно ли сохранять изображения только в частном каталоге приложения Android, а не во внутреннем или внешнем хранилище устройства?

Я не хочу хранить изображения приложений для Android во внутренней или внешней памяти устройства, чтобы они стали видны в галерее.

Прямо сейчас я сохраняю изображения своего приложения на внешнем хранилище устройства. Но я хочу сохранить изображения в приватный каталог приложения. Как я могу этого добиться?

Вот мой код активности:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == Activity.RESULT_OK) {

            if (requestCode == REQUEST_CAMERA) {

                Uri selectedImageUri = data.getData();

                if (null != selectedImageUri) {
                    // Get the path from the Uri

                    String path = getPathFromURI(selectedImageUri);
                    File file = new File(path);
                    Bitmap bmp = CommonMethod.compressImage(file, getContext());
                    Log.e(TAG, "onActivityResult --: " + String.format("Size : %s", getReadableFileSize(file.length())));

                    mCustomerImage = CommonMethod.bitmapToByteArray(bmp);
                    imageTemplateStr = Base64.encodeToString(mCustomerImage, Base64.DEFAULT);
                    Log.e(TAG, "image: " + imageTemplateStr);
                    //CommonMethod.SaveImage(bmp);
                    imageCustomer.setImageBitmap(bmp);

                    CommonMethod.SaveImage(bmp);
                }

            } else if (requestCode == SELECT_FILE) {
                Uri selectedImageUri = data.getData();
                if (null != selectedImageUri) {
                    // Get the path from the Uri

                    String path = getPathFromURI(selectedImageUri);
                    File file = new File(path);
                    Bitmap bmp = CommonMethod.compressImage(file, getContext());
                    Log.e(TAG, "onActivityResult --: " + String.format("Size : %s", getReadableFileSize(file.length())));

                    mCustomerImage = CommonMethod.bitmapToByteArray(bmp);
                    imageTemplateStr = Base64.encodeToString(mCustomerImage, Base64.DEFAULT);
                    //CommonMethod.SaveImage(bmp);
                    Log.e(TAG, "image: " + imageTemplateStr);

                    imageCustomer.setImageBitmap(bmp);

                    CommonMethod.SaveImage(bmp);
                }

            }
        }
    }

Метод SaveImage

 public static void SaveImage(Bitmap finalBitmap) {

    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/.safco_private_pics");
    if (!myDir.exists()) {
        myDir.mkdirs();
    }
    File newFile = new File(root,".nomedia");
    try {
        FileWriter writer = new FileWriter(newFile);
        writer.flush();
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    String fname = "Image-"+ n +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ())
        file.delete ();
    try {
        FileOutputStream out = new FileOutputStream(file);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

Метод getPathFromUri

public String getPathFromURI(Uri contentUri) {
    String res = null;
    String[] proj = {MediaStore.Images.Media.DATA};
    Cursor cursor = getActivity().getContentResolver().query(contentUri, proj, null, null, null);
    if (cursor.moveToFirst()) {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        res = cursor.getString(column_index);
    }
    cursor.close();
    return res;
} 

person Rashid Kalhoro    schedule 26.12.2018    source источник
comment
Вы ищете drawable? графическое руководство   -  person vincrichaud    schedule 26.12.2018
comment
тогда где вы хотите сохранить его? .. ты имеешь в виду в Интернете?   -  person bhardwaj    schedule 26.12.2018
comment
Прочитайте эту тему. И ради поиска не добавляйте тег IDE с вопросом, если только вопрос не касается IDE, т.е. android-studio.   -  person ADM    schedule 26.12.2018
comment
NOT on internal not on external device storage Затем вы должны сохранить свои изображения в облачном хранилище.   -  person ADM    schedule 26.12.2018
comment
Я использую базу данных SQLite @ADM   -  person Rashid Kalhoro    schedule 26.12.2018
comment
да на сервере или базе данных SQLite. или есть ли другое решение, с помощью которого изображения можно удалить после использования. ? @bhardwaj   -  person Rashid Kalhoro    schedule 26.12.2018
comment
@RashidKalhoro У вас есть 3 варианта. База данных, локальное хранилище или облако. Вы можете сохранять изображения в каталоге кеша приложений, который является внутренним хранилищем. Прочитайте developer.android.com/training/data-storage/files.   -  person ADM    schedule 26.12.2018
comment
Как было написано в комментариях, вы можете сохранить их 1) в каталог и сделать его невидимым для галерей 2) сервер (облако), требуется интернет 3) БД, но это не рекомендуется (stackoverflow.com/questions/53931301/) Я бы сохранил как файл в личном каталоге приложения и скрыл его из галерей.   -  person Jemshit Iskenderov    schedule 26.12.2018
comment
да, я храню его в частном порядке и пытаюсь скрыть от галереи, но мой клиент - болван. @JemshitIskenderov Я создал файл на внешнем накопителе, спрятал и сохранил в нем изображение, но в моей галерее все еще видны изображения?   -  person Rashid Kalhoro    schedule 26.12.2018
comment
Скрыть легко: stackoverflow.com /questions/17800491/ И сохраните изображение в каталоге App Private, чтобы пользователь не мог его легко увидеть или другие приложения не могли его удалить. developer.android.com/training/data-storage/   -  person Jemshit Iskenderov    schedule 26.12.2018
comment
я пробовал оба способа .nomedia и .hiddenfolder, но все равно не работает @JemshitIskenderov пожалуйста, посмотрите на мой код, что не так? Файл .nomedia не создается, проверьте, почему   -  person Rashid Kalhoro    schedule 26.12.2018
comment
Если вы поместите все изображения в папку A, а в папке A есть файл .nomedia, все изображения в этой папке должны быть невидимы для приложения галереи. Обновите галерею, может она тогда скроется (должна скрыться).   -  person Jemshit Iskenderov    schedule 26.12.2018
comment
да, я добавляю файл .nomdeia вручную, это сработало, но когда я взял новое изображение, это изображение снова стало видимым @JemshitIskenderov   -  person Rashid Kalhoro    schedule 26.12.2018
comment
Вы уверены, что новое изображение находится в том же каталоге, что и .nomedia? Также вы сохранили их в личном каталоге приложения? Если это так, я бы обвинил приложение галереи.   -  person Jemshit Iskenderov    schedule 26.12.2018
comment
да, это тот же каталог, но проблема в том, что изображение также хранится в моей папке DCIM/Camera, как от этого избавиться? @JemshitIskenderov, тогда это изображение видно в галерее   -  person Rashid Kalhoro    schedule 26.12.2018
comment
Тогда не храните его в папке DCIM/Camera.   -  person Jemshit Iskenderov    schedule 26.12.2018
comment
ха-ха, я не хочу, но не знаю, как это хранится внутри DCIM, можете ли вы сказать по моему коду @JemshitIskenderov   -  person Rashid Kalhoro    schedule 26.12.2018
comment
Решил мою проблему, спасибо всем.   -  person Rashid Kalhoro    schedule 28.12.2018
comment
@ADM Мне запретили задавать вопросы, поэтому, пожалуйста, проголосуйте за мои вопросы, я не понимаю, почему мой вопрос не актуален?   -  person Rashid Kalhoro    schedule 31.12.2018
comment
@JemshitIskenderov Мне запретили задавать вопросы, поэтому, пожалуйста, проголосуйте за мои вопросы, я не понимаю, почему мой вопрос не актуален? –   -  person Rashid Kalhoro    schedule 31.12.2018
comment
@bhardwaj мне запретили задавать вопросы, поэтому, пожалуйста, не голосуйте за мои вопросы, я не понимаю, почему мой вопрос не актуален? –   -  person Rashid Kalhoro    schedule 31.12.2018