将短信正文传递给默认短信应用

Pass sms body to default sms app

我在这里发现了多个与此相关的话题,但其中 none 个对我有用。这是我的代码:

public void sendSMS (String number, String body) {
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:" + number));
        i.putExtra("abc", body);
        startActivity(i);
    }

它打开股票短信应用程序并传递要发送的号码,但文本正文为空。 我也试过这个Uri.fromParts(body, number, null)但是应用程序就崩溃了。

用以下代码替换您的代码。您没有传递正确的密钥来检测短信的号码和正文。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));     
intent.putExtra("sms_body", message); 
startActivity(intent);

请阅读此文档以获取详细信息。 Compose an SMS/MMS message with attachment

试试这个

Intent smsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));
            smsIntent.putExtra("address", "12125551212");
            smsIntent.putExtra("sms_body","Body of Message");
            startActivity(smsIntent);

如果您想确保您的意图仅由短信应用程序(而不是其他电子邮件或社交应用程序)处理,请使用 ACTION_SENDTO 操作并包含“smsto:”数据方案。例如:

  public void composeMmsMessage(String message, Uri attachment) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setData(Uri.parse("smsto:"));  // This ensures only SMS apps respond
        intent.putExtra("sms_body", message);
        intent.putExtra(Intent.EXTRA_STREAM, attachment);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        }
    }