我有一个ImageView
,其中有一个bitmap
。我将其以.png格式存储在内部存储中,然后要使用shareIntent
进行共享。但是,当尝试共享时,它是在检索我黑色图像,而不是原始图像的QR码。
这就是我生成QR码并将其显示在ImageView
中的方式:
try {
BitMatrix bitMatrix = multiFormatWriter.encode(text,BarcodeFormat.QR_CODE,500,500);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap_img = barcodeEncoder.createBitmap(bitMatrix);
iv.setBackgroundColor(Color.WHITE); // iv is the ImageView
iv.setImageBitmap(bitmap_img);
bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap();
} catch (Exception r) { r.printStackTrace(); }
在共享按钮中:
try {
File imagesFolder = new File(getCacheDir(), "images");
File file = new File(imagesFolder, "shared_image.png");
FileOutputStream fOut = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
iv.setImageBitmap(bitmap); // iv is the ImageView
fOut.flush();
fOut.close();
savedImageURI = Uri.parse(file.getPath());
file.setReadOnly(); //Readable(true, false);
final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_STREAM, savedImageURI);
intent.setType("image/png");
startActivity(Intent.createChooser(intent, "Share image via"));
} catch (Exception e) { e.printStackTrace(); }
答案 0 :(得分:0)
这是一篇老文章,但是,我遇到了类似的问题,并认为我可以在这里分享解决方案,这可能会帮助其他遇到相同问题的开发人员。
我的问题是文件路径错误。从内部存储器中选择图像后,我也出现黑屏。我修复了文件路径,问题消失了。
这是我在AndroidManifest.xml
中添加的文件提供程序。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.your.application.package.goes.here"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
并且file_paths.xml
目录下的/res/xml/
文件是固定的,如下所示。
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="documents"
path="Android/data/com.your.application.package.goes.here/files/Pictures" />
</paths>
希望可以帮助遇到相同问题的人。