在Android上与WhatsApp共享文本“无法发送空消息”

时间:2019-08-13 08:17:18

标签: android whatsapp

当我尝试使用意图机制共享文本并选择WhatsApp时,它说:

  

无法发送空消息

我在这里阅读了有关Android集成的官方文档:https://faq.whatsapp.com/en/android/28000012

我的代码:

public void shareText(String label, CharSequence title, CharSequence body) {
        final Intent intent = new Intent(Intent.ACTION_SEND);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_SUBJECT, title.toString());
        intent.putExtra(Intent.EXTRA_TEXT, TextUtils.concat(title, body));

        final Intent chooser = Intent.createChooser(intent, label);
        chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        if (chooser.resolveActivity(mContext.getPackageManager()) != null) {
            mContext.startActivity(chooser);
        }
 }

我做错什么了吗?还是WhatsApp Messenger的错误?

P.S。在我的情况下,参数titlebody不能为空。

3 个答案:

答案 0 :(得分:2)

您要做的是

intent.putExtra(Intent.EXTRA_TEXT, TextUtils.concat(title, body));

TextUtils.concat(title, body)返回CharSequence可能是whatsapp不支持的。

您必须将值作为String传递,给您两个解决方案。

  • 您可以通过toString()将整个字符串转换为String

intent.putExtra(Intent.EXTRA_TEXT, TextUtils.concat(title, body).toString());

  • 在将其传递给意图之前将其转换为字符串。

String someValue = TextUtils.concat(title, body).toString();

并将其添加为

intent.putExtra(Intent.EXTRA_TEXT, someValue);

答案 1 :(得分:1)

在这里您可以将数据从您的应用发送到Whatsapp和其他任何messenger

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT,   " Your text ");
startActivity(Intent.createChooser(share,  " Your text "));

答案 2 :(得分:0)

这里的 sendEmtpyMassages 是 Button 只需复制这个方法就行了

sendEmtpyMassages.setOnClickListener {
        val context: Context = applicationContext
        val sendIntent = Intent("android.intent.action.MAIN")
        sendIntent.action = Intent.ACTION_VIEW
        sendIntent.setPackage("com.whatsapp")
        val url = "https://api.whatsapp.com/send?phone=" + "&text=" + " "
        sendIntent.data = Uri.parse(url)
        if (sendIntent.resolveActivity(context.packageManager) != null) {
            startActivity(sendIntent)
        }
    }