sendMultipartTextMessage ISMS $存根$ Proxy.sendMultipartTextOnSubscription NullPointerException异常存根、异常

2023-09-06 06:37:16 作者:男宠老公

即时得到NullPointerException异常以下code:

我有短信超过160个字符长度,所以IM分割并使用分频(),然后添加一个发送PendingIntent。

有时候这种异常出现。我的手机号码和短信内容不为空;

 字符串SENT =SMS_SENT;

    PendingIntent sentPI = PendingIntent.getBroadcast(此,0,新的意向(
            SENT),0);

    // ---当短信已发送---
    BroadcastReceiver的sentSMSStatusReciever =新的BroadcastReceiver(){
        @覆盖
        公共无效的onReceive(背景为arg0,意图ARG1){
            开关(的getResult code()){
                   //土司
            }
            unregisterReceiver(本);
        }
    };
    registerReceiver(sentSMSStatusReciever,新的IntentFilter(发送));

    SmsManager的SmsManager的= SmsManager.getDefault();

    //因为消息是大于160个字符
    ArrayList的smsContructedList = smsManager.divideMessage(短信内容到这里......);

    ArrayList的< PendingIntent> sentPIList =新的ArrayList< PendingIntent>(1);

    sentPIList.add(sentPI);

    smsManager.sendMultipartTextMessage(手机号码放在这里,空,
            smsContructedList,sentPIList,NULL);
 

日志:

 显示java.lang.NullPointerException
E / AndroidRuntime(4527):在android.os.Parcel.readException(Parcel.java:1328)
E / AndroidRuntime(4527):在android.os.Parcel.readException(Parcel.java:1276)
E / AndroidRuntime(4527):在com.android.internal.telephony.ISms $存根$ Proxy.sendMultipartTextOnSubscription(ISms.java:1351)
E / AndroidRuntime(4527):在android.telephony.SmsManager.sendMultipartTextMessage(SmsManager.java:354)
 

解决方案

补充一点:

 的ArrayList<字符串> messageArray = smsManager.divideMessage(myMessage);
ArrayList的< PendingIntent> sentIntents =新的ArrayList< PendingIntent>();
的for(int i = 0; I< messageArray.size();我++)
sentIntents.add(sentPI);
smsManager.sendMultipartTextMessage(SENDTO,空,messageArray,sentIntents,NULL);
 

Im getting nullpointerexception for the following code:

I have SMS of more than 160 characters length, so im dividing them using divide() and then adding one sent PendingIntent.

Sometimes this exception comes up. My mobile number and sms data are not null;

   String SENT = "SMS_SENT";

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
            SENT), 0);

    // ---when the SMS has been sent---
    BroadcastReceiver sentSMSStatusReciever = new BroadcastReceiver() {
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode()) {
                   //TOAST
            }
            unregisterReceiver(this);
        }
    };
    registerReceiver(sentSMSStatusReciever, new IntentFilter(SENT));

    SmsManager smsManager = SmsManager.getDefault();

    // since message is greater than 160 chars
    ArrayList smsContructedList = smsManager.divideMessage("SMS Content goes here ....");

    ArrayList<PendingIntent> sentPIList = new ArrayList<PendingIntent>(1);

    sentPIList.add(sentPI);

    smsManager.sendMultipartTextMessage("Mobile Number goes here", null,
            smsContructedList, sentPIList, null);

LOGS:

java.lang.NullPointerException
E/AndroidRuntime( 4527):    at android.os.Parcel.readException(Parcel.java:1328)
E/AndroidRuntime( 4527):    at android.os.Parcel.readException(Parcel.java:1276)
E/AndroidRuntime( 4527):    at com.android.internal.telephony.ISms$Stub$Proxy.sendMultipartTextOnSubscription(ISms.java:1351)
E/AndroidRuntime( 4527):    at android.telephony.SmsManager.sendMultipartTextMessage(SmsManager.java:354)

解决方案

Add this:

ArrayList<String> messageArray = smsManager.divideMessage(myMessage);
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
for (int i = 0; i < messageArray.size(); i++)
sentIntents.add(sentPI);
smsManager.sendMultipartTextMessage(sendTo,null,messageArray,sentIntents, null);