Java 多方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;

我是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;
    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