我怎样才能发送带文字的图片和分享
How can i send image with text with share
目前我正在使用以下代码分享文本:
Intent i = new Intent(android.content.Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(android.content.Intent.EXTRA_TEXT, "This is tesing");
startActivity(Intent.createChooser(i, "Share via"));
由此我可以在任何社交媒体平台上分享文本。
但我也想与此共享图像,我的图像是二进制形式。
InputStream input = new java.net.URL(
product.getString("url")).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
所以图片分享我写了下面的代码:
i.putExtra(android.content.Intent.EXTRA_TEXT, bitmap);
但它不起作用。它共享如下文本:- android.graphics.Bitmap@43394c40
那么我怎样才能与此分享图片呢?
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse( "file://"+filelocation));
编程 Android 设备,避免为地球使用位图。当您将位图加载到内存中时,您使用的是 RAM,它是小型设备上的关键资源。尽可能多地使用 Uris。
编辑:
您可以将图片和文字一起发送,例如通过电子邮件。您将所有内容放入 Intent 的想法是正确的。唯一的错误是处理位图而不是处理比特流。在发送图片之前,您必须先将其保存在设备的存储空间中。如果您不先保存它,您将比您预期的更快地实现缓冲区溢出。
- 首先,您必须下载该图像并保存在 ExternalStorage 中。 Check this link
- 社交应用不支持同时分享图片和文字。
使用下面的示例代码:
Intent i = new Intent(android.content.Intent.ACTION_SEND);
i.setType("image/*");
i.putExtra(android.content.Intent.EXTRA_TEXT, "This is tesing");
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile("file_path"));
startActivity(Intent.createChooser(i, "Share via"));
配套APP:
Google+
环聊
- Gmail
- 电子邮件
- Whatsapp
不支持APP:
- 脸书
- Skype
- 远足
您必须先将 url 中的位图保存到磁盘中,然后使用要传递的文件。
File file = writebitmaptofilefirst("the_new_image","http://www.theimagesource.com/blahblahblah.jpg");
Uri uri = Uri.fromFile(file);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
添加这个方法
public static File writebitmaptofilefirst(String filename, String source) {
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File mFolder = new File(extStorageDirectory + "/temp_images");
if (!mFolder.exists()) {
mFolder.mkdir();
}
OutputStream outStream = null;
File file = new File(mFolder.getAbsolutePath(), filename + ".png");
if (file.exists()) {
file.delete();
file = new File(extStorageDirectory, filename + ".png");
Log.e("file exist", "" + file + ",Bitmap= " + filename);
}
try {
URL url = new URL(source);
Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
outStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
Log.e("file", "" + file);
return file;
}
目前我正在使用以下代码分享文本:
Intent i = new Intent(android.content.Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(android.content.Intent.EXTRA_TEXT, "This is tesing");
startActivity(Intent.createChooser(i, "Share via"));
由此我可以在任何社交媒体平台上分享文本。
但我也想与此共享图像,我的图像是二进制形式。
InputStream input = new java.net.URL(
product.getString("url")).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
所以图片分享我写了下面的代码:
i.putExtra(android.content.Intent.EXTRA_TEXT, bitmap);
但它不起作用。它共享如下文本:- android.graphics.Bitmap@43394c40
那么我怎样才能与此分享图片呢?
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse( "file://"+filelocation));
编程 Android 设备,避免为地球使用位图。当您将位图加载到内存中时,您使用的是 RAM,它是小型设备上的关键资源。尽可能多地使用 Uris。
编辑:
您可以将图片和文字一起发送,例如通过电子邮件。您将所有内容放入 Intent 的想法是正确的。唯一的错误是处理位图而不是处理比特流。在发送图片之前,您必须先将其保存在设备的存储空间中。如果您不先保存它,您将比您预期的更快地实现缓冲区溢出。
- 首先,您必须下载该图像并保存在 ExternalStorage 中。 Check this link
- 社交应用不支持同时分享图片和文字。
使用下面的示例代码:
Intent i = new Intent(android.content.Intent.ACTION_SEND); i.setType("image/*"); i.putExtra(android.content.Intent.EXTRA_TEXT, "This is tesing"); i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile("file_path")); startActivity(Intent.createChooser(i, "Share via"));
配套APP:
Google+
环聊
- Gmail
- 电子邮件
不支持APP:
- 脸书
- Skype
- 远足
您必须先将 url 中的位图保存到磁盘中,然后使用要传递的文件。
File file = writebitmaptofilefirst("the_new_image","http://www.theimagesource.com/blahblahblah.jpg");
Uri uri = Uri.fromFile(file);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
添加这个方法
public static File writebitmaptofilefirst(String filename, String source) {
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File mFolder = new File(extStorageDirectory + "/temp_images");
if (!mFolder.exists()) {
mFolder.mkdir();
}
OutputStream outStream = null;
File file = new File(mFolder.getAbsolutePath(), filename + ".png");
if (file.exists()) {
file.delete();
file = new File(extStorageDirectory, filename + ".png");
Log.e("file exist", "" + file + ",Bitmap= " + filename);
}
try {
URL url = new URL(source);
Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
outStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
Log.e("file", "" + file);
return file;
}