代码之家  ›  专栏  ›  技术社区  ›  Annah

如何在WhatsApp中共享图像和文本

  •  1
  • Annah  · 技术社区  · 8 年前

    我有一个共享功能,可以同时共享图像和文本。我做的如下所示

    val uri = FileProvider.getUriForFile(context!!,BuildConfig.APPLICATION_ID + ".provider",file)
    
    val intent = Intent(Intent.ACTION_SEND)
    intent.putExtra(Intent.EXTRA_STREAM, uri)
    intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
    intent.type = "*/*"
    
    if (etShareMessage.text.isNotEmpty()) {
        intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text)
    }
    
    val title = resources.getString(R.string.screenshot_share_with)
    
    val chooser = Intent.createChooser(intent, title)
    
    // Verify the intent will resolve to at least one activity
    if (intent.resolveActivity(activity?.packageManager) != null) {
        startActivity(chooser)
    } else {
        ToastUtils.showToast(context,getString(R.string.screenshot_sorry_no_apps_to_share))
        dismiss()
    }
    

    它对 Gmail 和 Hike . 但是 WhatsApp 仅显示图像。我已经提到 this 张贴和其他几个链接。但没有运气。我看到了 Amazon 应用程序和 Loco 应用程序能够做到这一点。

    有人能帮我解决为什么TSAP没有从上面的意图中提取文本吗?

    3 回复  |  直到 8 年前
        1
  •  0
  •   Sahil    8 年前

    尝试

    Intent.ACTION_SEND_MULTIPLE
    

    而不是:

    Intent.ACTION_SEND
    
        2
  •  0
  •   Jinson Paul    8 年前
    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
    
                        Bitmap bm = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
                        Intent intent = new Intent(Intent.ACTION_SEND);
                        intent.putExtra(Intent.EXTRA_TEXT, "YOUR TEXT");
                        String path = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bm, "", null);
                        Uri screenshotUri = Uri.parse(path);
    
                        intent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
                        intent.setType("image/*");
                        startActivity(Intent.createChooser(intent, "Share image via..."));
                    } else {
                        ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
                    }
    

    通过这种方法,我们可以将图像共享给图像视图中的图像。

        3
  •  0
  •   Annah    8 年前

    在做了大量的尝试和错误之后,我发现我们通过意图传递文本的方式。额外的文本对于WhatsApp很重要!!

    我刚换了

    intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text)
    

    到

    intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text.toString())
    

    它起作用了。