也许是一个简单的问题:我想通过网络分享我在网上收到的位图,默认分享“意图”。
我找到的代码
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("image/jpeg");
sendIntent.putExtra(Intent.EXTRA_STREAM, "IDONTKNOW");
sendIntent.putExtra(Intent.EXTRA_TEXT,
"See my captured picture - wow :)");
startActivity(Intent.createChooser(sendIntent, "share"));
需要使用位图在“IDONTKNOW”点填充。 (this.bitmap)
如果不将位图保存到内部sd,我发现无法处理此问题。
问候
答案 0 :(得分:7)
简单地说,您可以将位图从外部存储转换为PNG。
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File imageFile = new File(path, getCurrentTime()+ ".png");
FileOutputStream fileOutPutStream = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fileOutPutStream);
fileOutPutStream.flush();
fileOutPutStream.close();
然后,您可以通过Uri.parse获取URI:
return Uri.parse("file://" + imageFile.getAbsolutePath());
答案 1 :(得分:4)
现在可能会晚一点,但如果您不关心它的存储方式,您也可以String url = Images.Media.insertImage(context.getContentResolver(), image, "title", null);
。
答案 2 :(得分:1)
好的,我自己得到它,似乎没有办法获得图像uri而不将位图保存到磁盘,因此我使用这个简单的方法:
private Uri storeImage() {
this.storedImage = null;
this.storeImage = true;
// Wait for the image
while (this.storedImage == null && !this.stop)
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.storeImage = false;
FileOutputStream fileOutputStream = null;
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File file = new File(path, "cwth_" + getCurrentTime()+ ".jpg");
try {
fileOutputStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
this.storedImage.compress(CompressFormat.JPEG, JPEG_STORE_QUALITY, bos);
try {
bos.flush();
bos.close();
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return Uri.parse("file://" + file.getAbsolutePath());
}
答案 3 :(得分:-2)
发送二进制内容 使用ACTION_SEND操作共享二进制数据,并设置适当的MIME类型并将URI放在另外一个名为EXTRA_STREAM的数据中。这通常用于共享图像,但可用于共享任何类型的二进制内容:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));