【问题标题】:Pass sms body to default sms app将短信正文传递给默认短信应用
【发布时间】:2018-06-27 09:33:02
【问题描述】:

我在这里找到了多个关于此的主题,但没有一个对我有用。这是我的代码:

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),但应用程序就崩溃了。

【问题讨论】:

    标签: android android-intent sms


    【解决方案1】:

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

    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

    【讨论】:

    • 谢谢,没有意识到“sms_body”是一个“常数”:)
    【解决方案2】:

    试试这个

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

    【讨论】:

    • 谢谢,没有意识到“sms_body”是一个“常数”:)
    • @Nemanja "sma_body" 是关键,它总是将消息传递到正文中
    【解决方案3】:

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

    【讨论】:

    • 谢谢,没有意识到“sms_body”是一个“常数”:)
    • "sma_body" 是 key 并且它总是 constant 用于将消息传递到正文
    猜你喜欢
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多