Как получить и поделиться растровым изображением из папки устройства - PullRequest
1 голос
/ 13 марта 2019

Я создаю приложение-генератор мемов.Пока что приложение делает все, что мне нужно, но я хочу добавить еще 1 функциональность.Приложение сохраняет мем как bitmap на моем устройстве.Я хочу добавить функциональность, при которой, если пользователь желает поделиться мемом в Facebook, Twitter, IG и т. Д., Приложение получает тот же растровый рисунок (который был только что создан).

Я не беспокоюсьо функции обмена на данный момент.Я хочу узнать, как я могу получить файл, чтобы иметь возможность поделиться им.

Это метод, при котором происходит создание и сохранение мема.Я опущу ненужный код:

public void createBitmapAndSave(ImageView img) {

        ...

        counter++;

        File file;
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

        String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();
        file = new File(path + "/SimpliMeme/" + timeStamp + "-" + counter + ".jpg");
        file.getParentFile().mkdir();

        try {
            OutputStream stream = new FileOutputStream(file);
            mutableBitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            stream.flush();
            stream.close();
            Toast.makeText(getContext(), "Top Text: " + String.valueOf(topTextMeasurement) + " and bottom text: " + String.valueOf(bottomTextMeasurement),
                    Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }

        Uri contentUri = Uri.fromFile(file);
        mediaScanIntent.setData(contentUri);
        Objects.requireNonNull(getContext()).sendBroadcast(mediaScanIntent);
    }

, и я создал пустой метод, который необходимо вызывать, когда пользователь нажимает кнопку «Поделиться»:

public void shareMeme(){}

1 Ответ

1 голос
/ 19 марта 2019

Как вы уже упоминали ранее, вы должны разделить этот большой метод на 2 маленьких.

Что касается вашего первоначального вопроса: нет смысла возвращаться к вашему устройству, просто чтобы найти и получить ту же фотографию. Разделите метод на 2 метода (например, createBitmap() & saveBitmap()), и если пользователь просто хочет поделиться им, не сохраняя его на устройстве, приложение просто вызовет метод createBitmap(), чтобы создать только растровое изображение и тогда вы будете использовать это в своих будущих функциях обмена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...