【问题标题】:Share text with WhatsApp on Android "Can't send empty message"在 Android 上与 WhatsApp 共享文本“无法发送空消息”
【发布时间】:2019-12-19 18:33:56
【问题描述】:

当我尝试使用意图机制共享文本并选择 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 的错误?

附:在我的情况下,参数 title 和 body 不为空。

【问题讨论】:

  • 您要发送空消息吗?
  • 不,实际上title和body都不为空。
  • 你检查过它是否是空的吗?
  • @sanjeev 很多次,甚至添加了断言语句。它还可以与 Telegram 和 Gmail、Evernote 一起使用,但不能与 WhatsApp 一起使用
  • 你试过删除intent.putExtra(Intent.EXTRA_SUBJECT, title.toString());并分享到whatsapp吗?有时应用可能不支持主题?

标签: android whatsapp


【解决方案1】:

这里 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)
        }
    }

【讨论】:

    【解决方案2】:

    你所做的是,

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

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

    您必须将值作为字符串传递给您两个解决方案。

    • 可以通过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);
    

    【讨论】:

    • 你是对的。但这是令人沮丧的体验,因为如果不支持,其他信使和应用程序可以接受 CharSequence 和剥离格式。所以我会将普通字符串设置为 Intent.EXTRA_TEXT 并添加 Spannable 的 html 表示,如下所示:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { intent.putExtra(Intent.EXTRA_HTML_TEXT, Html.toHtml(TextUtils.concat(title, body))); }
    • 是的,这似乎是一种很好的接近方法,而且更有意义。
    【解决方案3】:

    在这里,您可以将数据从您的应用程序发送到 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 "));
    

    【讨论】:

    • 这就像从官方文档中复制粘贴一样。已经尝试过这个确切的例子并且它正在工作。但我的案子有什么问题?我不需要发送“你的文字”字样
    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多