4

我的应用程序有一个图像按钮,单击该按钮应仅通过 SMS发送一段文本。我如何让我的应用程序做到这一点?请帮忙。

我还希望用户能够从他设备上的联系人列表中选择一个联系人。

朱马纳

4

4 回答 4

19

要使用意图发送短信,请使用以下代码:

String smsBody="Sms Body";
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", smsBody); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

我希望这有帮助!

于 2012-04-29T15:28:34.040 回答
1

启用发送短信的步骤:

1- 在 android-manifest 中,添加发送短信权限,如下所示:

<uses-permission android:name="android.permission.SEND_SMS" />

2-在你的活动中添加这个方法:

public void sendSms(final String receiverNumber, final String smsBody) {
    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(receiverNumber, null, smsBody, null, null);        
}
于 2012-04-29T08:40:41.663 回答
1

这是通过意图发送 SMS/MMS 的唯一正确方法:

https://developer.android.com/guide/components/intents-common#SendMessage

不需要setType("vnd.android-dir/mms-sms")或其他恶作剧。

有这样的意图的官方文档,应该遵循。

对于 SMS,您只需要这样:

fun composeSmsMessage(message: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        type = HTTP.PLAIN_TEXT_TYPE
        data = Uri.parse("smsto:")  // This ensures only SMS apps respond
        putExtra("sms_body", message)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

如果您有 SMS/MMS 的收件人,您可以将其添加到数据Uri之后smsto:,例如smsto:+123456789),否则用户将在 SMS/MMS 应用程序中选择收件人。

如果文本太长,它将作为彩信发送,如果您需要发送带有图像或视频的彩信,您可以类似地执行此操作,但添加一个UriasIntent.EXTRA_STREAM并相应地指定类型(图像/视频)。Uri需要由提供相应图像或视频的公开内容提供商处理。

在个人笔记上...

(我希望有一种方法可以在堆栈溢出中为“错误答案”投票,以避免人们只是将错误的东西复制到他们的应用程序中)

于 2020-10-21T10:10:07.300 回答
-2

试试下面的代码...在按钮的 onClickListener() 中添加这段代码。

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        String shareBody = "Here is the share content body";
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, "Share via"));
于 2012-04-29T08:40:18.720 回答