如何从设备文件夹中检索和共享位图

时间:2019-03-13 07:22:16

标签: java android bitmap inputstream outputstream

我正在构建一个模因生成器应用程序。到目前为止,该应用程序已完成我需要做的所有事情,但我想再添加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 个答案:

答案 0 :(得分:1)

就像您之前提到的,您必须将此大方法分为2个小方法。

就您最初提出的问题而言:回到设备只是为了寻找并获得同一张照片是没有意义的。将方法分为2种方法(例如createBitmap()saveBitmap()),如果用户只是想共享它而不将其保存到设备,则应用程序将只调用createBitmap()方法仅创建位图,然后在即将使用的共享功能中使用它。