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

时间:2018-06-27 09:33:02

标签: android android-intent sms

我在这里找到了多个与此相关的线程,但是没有一个对我有用。这是我的代码:

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),但随后应用崩溃了。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

尝试一下

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

答案 2 :(得分:1)

如果您想确保仅通过短信应用程序(而不是其他电子邮件或社交应用程序)处理您的意图,请使用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);
        }
    }