如何从设备文件夹中检索和共享位图
How to retrieve & share bitmap from device folder
我正在构建一个模因生成器应用程序。到目前为止,该应用程序完成了我需要它做的所有事情,但我想再添加 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);
}
并且我创建了一个空方法,需要在用户点击 "Share" 按钮时调用该方法:
public void shareMeme(){}
就像你之前提到的,你要把这个大方法分成2个小方法。
就您最初的问题而言:返回您的设备只是为了查找并获取同一张照片是没有意义的。将方法分为 2 个方法(例如 createBitmap()
和 saveBitmap()
),如果用户只是想分享它而不将其保存到设备,应用程序将只调用 createBitmap()
方法仅创建位图,然后您将在即将推出的共享功能中使用它。
我正在构建一个模因生成器应用程序。到目前为止,该应用程序完成了我需要它做的所有事情,但我想再添加 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);
}
并且我创建了一个空方法,需要在用户点击 "Share" 按钮时调用该方法:
public void shareMeme(){}
就像你之前提到的,你要把这个大方法分成2个小方法。
就您最初的问题而言:返回您的设备只是为了查找并获取同一张照片是没有意义的。将方法分为 2 个方法(例如 createBitmap()
和 saveBitmap()
),如果用户只是想分享它而不将其保存到设备,应用程序将只调用 createBitmap()
方法仅创建位图,然后您将在即将推出的共享功能中使用它。