【发布时间】:2018-05-15 18:55:55
【问题描述】:
我无法使用共享意图传递图像。应用程序运行,但当我尝试在 WhatsApp 中将图像发送给朋友时,它显示“共享失败,请重试”并与gmail 它说“无法附加空文件”。我还在清单中设置了权限。我猜在创建文件或路径时存在一些问题。
请检查以下代码:
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap icon = BitmapFactory.decodeResource(getResources(), img);
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sharingIntent.setType("image/*");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ File.separator + "temporary_file.jpg");
// File f1=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
//File f = new File(Environment.getExternalStorageDirectory() + "/save_picture", "temporary_file.jpg");
try {
f.createNewFile();
// f.mkdir();
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
// sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + Environment.getExternalStorageDirectory()));
sharingIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("content:///sdcard/temporary_file.jpg"));
startActivity(Intent.createChooser(sharingIntent, "Share via: "));
}
});
【问题讨论】:
-
logcat中有stacktrace吗?
-
不,应用程序运行并且它不会崩溃。在 logcat 中没有看到异常或错误。
-
您决定为位图的图像存储在哪里?在文件系统或内存中?
-
嗯,好像是运行时权限问题
-
@MarcEstrada 实际上传入 Bitmap 的 img 是图像的整数值,甚至我可以看到图像从调试模式转换为位图。我猜它与文件有关。
标签: java android android-intent share