我的应用程序有一个图像按钮,点击该按钮应该只通过短信发送一段文字。我如何让我的应用程序这样做?请帮忙。
我还希望用户能够从他设备上的联系人列表中选择联系人。
Jumana
答案 0 :(得分:18)
要使用意图发送短信,请使用以下代码:
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);
我希望这有帮助!
答案 1 :(得分:1)
启用发送短信的步骤:
1-在android-manifest中,添加发送短信权限,如下所示:
<uses-permission android:name="android.permission.SEND_SMS" />
2-在yout Activity中添加此方法:
public void sendSms(final String receiverNumber, final String smsBody) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(receiverNumber, null, smsBody, null, null);
}
答案 2 :(得分:0)
这是通过意图发送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应用。
如果文本太长,它将作为彩信发送,如果您需要发送包含图像或视频的彩信,您也可以进行类似的操作,但是将Uri
添加为Intent.EXTRA_STREAM
并指定类型相应地(图片/视频)。 Uri
需要由提供相应图像或视频的公开内容提供商处理。
在个人笔记上...
(我希望堆栈溢出中有一种方法可以对“错误答案”进行投票 避免人们只是将错误的内容复制到他们的应用中)
答案 3 :(得分:-2)
尝试以下代码...在Button的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"));