我已经弄明白了如何发送和接收短信.要发送短信,我必须调用该类的sendTextMessage()和sendMultipartTextMessage()方法SmsManager.要接收SMS消息,我必须在AndroidMainfest.xml文件中注册接收器.然后我不得不重写onReceive()方法BroadcastReceiver.我在下面列举了一些例子.
MainActivity.java
public class MainActivity extends Activity {
private static String SENT = "SMS_SENT";
private static String DELIVERED = "SMS_DELIVERED";
private static int MAX_SMS_MESSAGE_LENGTH = 160;
// ---sends an SMS message to another device---
public static void sendSMS(String phoneNumber, String message) {
PendingIntent piSent = PendingIntent.getBroadcast(mContext, 0, new Intent(SENT), 0);
PendingIntent piDelivered = PendingIntent.getBroadcast(mContext, 0,new Intent(DELIVERED), 0);
SmsManager smsManager = SmsManager.getDefault();
int length = message.length();
if(length > MAX_SMS_MESSAGE_LENGTH) …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于发送短信和多部分短信的帖子,例如:
在Android中发送短信,在Android中 发送和接收短信和彩信(pre Kit Kat Android 4.4), Android PendingIntent附加功能,未被BroadcastReceiver接收
......和其他人,但他们似乎没有检查消息的所有部分是否已成功发送.
根据我的理解,使用多部分消息,您为每个消息部分添加PendingIntent,但我看到的示例似乎没有检查所有部分是否已成功发送...如果是(我猜第一个) )他们似乎认为它是成功的......
所以我想我会发送一个多部分的消息并跟踪这些部分.在成功发送所有部件之前,我不会说消息已成功发送.
我试图在以下代码中执行此操作... SmsMessageInfo只是一个简单的类,其中包含电话号码,消息和已处理部件的布尔列表以及成功发送的部件列表,它还具有唯一的消息ID.
我尝试过以下方法:
private void sendLongSmsMessage(Context context, final SmsMessageInfo messageInfo) {
// Receive when each part of the SMS has been sent (or does it????)
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String messageIdAsString = intent.getExtras().getString(INTENT_EXTRA_MESSAGE_ID_KEY);
Log.i("SMSMessageSender", "Broadcast Intent Recieved, IntentMessageID: " + messageIdAsString + " messageInfoId: " + messageInfo.messageId);
if (messageIdAsString != null) {
if (Long.parseLong(messageIdAsString) == messageInfo.messageId) {
String …Run Code Online (Sandbox Code Playgroud) 如何发送短信?这看起来很简单,但对我来说不起作用。
我在清单中获得了许可:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.healthapp.healthapp">
<uses-permission android:name="android.permission.SEND_SMS"/>
<application ...
Run Code Online (Sandbox Code Playgroud)
然后我的 onClick 中有这段代码:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("07123456789", null, "Hello there!", null, null);
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content");
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个程序时,我得到“不幸的是应用程序已停止”。
以及错误消息:
FATAL EXCEPTION: main
Process: com.healthapp.healthapp, PID: 13477
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW typ=vnd.android-dir/mms-sms (has extras) }
Run Code Online (Sandbox Code Playgroud)