Java 多方SMS的交付报告
我是android的初学者。我想获取多部分sms的交付报告,但它不适用于多部分。一条短信就可以了。此代码是否有可能同时针对多个和单个sms执行Java 多方SMS的交付报告,java,android,broadcastreceiver,Java,Android,Broadcastreceiver,我是android的初学者。我想获取多部分sms的交付报告,但它不适用于多部分。一条短信就可以了。此代码是否有可能同时针对多个和单个sms执行 public class SMSSend { static final String SMS_SENT = "testSend"; static final String SMS_DELIVERED = "testDelivered"; static final int MAX_LENGTH_SMS = 160;
public class SMSSend {
static final String SMS_SENT = "testSend";
static final String SMS_DELIVERED = "testDelivered";
static final int MAX_LENGTH_SMS = 160;
static String messageB = null;
static String messageReport = null;
}
public static void sendSMS(String message, String phnNumber, Context c) throws Exception {
SmsManager manager = SmsManager.getDefault();
PendingIntent pisend = PendingIntent.getBroadcast(c, 0, new Intent(SMS_SENT), 0);
PendingIntent piDelivered = PendingIntent.getBroadcast(c, 0,new Intent(SMS_DELIVERED), 0);
ArrayList<PendingIntent> piSendList = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> piDeliveredList = new ArrayList<PendingIntent>();
int length = message.length();
System.out.println("legth:" + length);
System.out.println("phone:" + phnNumber);
System.out.println("phone:" + message);
if (length > MAX_LENGTH_SMS) {
System.out.println("inside multisms");
ArrayList<String> messageDivide = manager.divideMessage(message);
manager.sendMultipartTextMessage(phnNumber, null, messageDivide,piSendList, piDeliveredList);
for (int i = 0; i < messageDivide.size(); i++) {
piSendList.add(i, pisend);
System.out.println("pisend Multi:" + pisend.toString());
piDeliveredList.add(i, piDelivered);
}
c.registerReceiver(receiver, new IntentFilter(SMS_SENT));
} else {
System.out.println("inside send Message");
manager.sendTextMessage(phnNumber, null, message, pisend,piDelivered);
c.registerReceiver(receiver, new IntentFilter(SMS_SENT));
c.registerReceiver(recieverReport, new IntentFilter(SMS_DELIVERED));
}
}
public static BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("inside broadcast");
switch (getResultCode()) {
case Activity.RESULT_OK:
messageB = "Message Sent";
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
messageB = "No sms Service";
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
messageB = "radio off!!";
default:
messageB = "check the Settings";
break;
}
Toast.makeText(context, messageB, Toast.LENGTH_LONG).show();
context.unregisterReceiver(receiver);
}
};
public static BroadcastReceiver recieverReport = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
messageReport = "Message Sent";
break;
case Activity.RESULT_CANCELED:
messageReport = "No sms Service";
break;
default:
messageReport = "check the Settings";
break;
}
Toast.makeText(context, messageReport, Toast.LENGTH_LONG).show();
context.unregisterReceiver(recieverReport);
}
};
}
公共类SMSSend{
静态最终字符串SMS_SENT=“testSend”;
静态最终字符串SMS_DELIVERED=“testDelivered”;
静态最终整数最大长度=160;
静态字符串messageB=null;
静态字符串messageReport=null;
}
公共静态void sendSMS(字符串消息、字符串phnNumber、上下文c)引发异常{
SmsManager manager=smsmsmanager.getDefault();
PendingEvent pisend=PendingEvent.getBroadcast(c,0,新意图(SMS_已发送),0);
PendingEvent piDelivered=PendingEvent.getBroadcast(c,0,新意图(SMS_交付),0);
ArrayList piSendList=新的ArrayList();
ArrayList PideliverList=新的ArrayList();
int length=message.length();
System.out.println(“长度:+长度”);
System.out.println(“电话:+phnNumber”);
System.out.println(“电话:+信息”);
如果(长度>最大长度){
System.out.println(“内部多线程”);
ArrayList messageDivide=manager.divideMessage(message);
sendMultipartTextMessage(phnNumber,null,messageDivide,piSendList,piDeliveredList);
对于(int i=0;i