繁体   English   中英

我如何发送带有共享文本的图像

[英]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

那么我该如何分享图像呢?

  1. 首先,您必须下载该映像并将其保存在ExternalStorage中。 检查此链接
  2. 社交应用程序不支持一起共享图像和文本。
  3. 在下面使用此示例代码:

      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:

  1. Google+

  2. 出去玩

  3. 邮箱
  4. 电子邮件
  5. Whatsapp的

不支持APP:

  1. 脸书
  2. Skype的
  3. 远足
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse( "file://"+filelocation));

对Android设备进行编程时,请避免对地球使用位图。 当您将位图加载到内存时,您将使用RAM,这是小型设备上的关键资源。 尽可能经常使用Uri

编辑:

您可以例如通过电子邮件一起发送图像和文本。 您将所有内容放入Intent的想法是正确的。 唯一的错误是使用位图而不是位流。 发送图片之前,您必须先将其保存在设备的存储器中。 如果不先保存它,则会比预期的更快实现缓冲区溢出。

您必须先将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;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM