发送SMS,NullPointerException

时间:2013-02-07 15:17:34

标签: android sms nullpointerexception

好的,我现在已经尝试了一切。我要做的就是发送短信。但是当我尝试时,我收到了这个错误:

02-07 17:05:45.550: W/System.err(17373): java.lang.NullPointerException
02-07 17:05:45.550: W/System.err(17373):    at android.os.Parcel.readException(Parcel.java:1333)
02-07 17:05:45.555: W/System.err(17373):    at android.os.Parcel.readException(Parcel.java:1281)
02-07 17:05:45.555: W/System.err(17373):    at com.android.internal.telephony.ISms$Stub$Proxy.sendText(ISms.java:698)
02-07 17:05:45.555: W/System.err(17373):    at android.telephony.SmsManager.sendTextMessage(SmsManager.java:113)
02-07 17:05:45.555: W/System.err(17373):    at fi.juunas.paali.MainActivity.sendSMS(MainActivity.java:178)
02-07 17:05:45.555: W/System.err(17373):    at fi.juunas.paali.MainActivity.textSingle(MainActivity.java:104)
02-07 17:05:45.560: W/System.err(17373):    at fi.juunas.paali.MainActivity$1.onClick(MainActivity.java:80)
02-07 17:05:45.560: W/System.err(17373):    at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
02-07 17:05:45.560: W/System.err(17373):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-07 17:05:45.560: W/System.err(17373):    at android.os.Looper.loop(Looper.java:137)
02-07 17:05:45.560: W/System.err(17373):    at android.app.ActivityThread.main(ActivityThread.java:4507)
02-07 17:05:45.560: W/System.err(17373):    at java.lang.reflect.Method.invokeNative(Native Method)
02-07 17:05:45.565: W/System.err(17373):    at java.lang.reflect.Method.invoke(Method.java:511)
02-07 17:05:45.565: W/System.err(17373):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
02-07 17:05:45.565: W/System.err(17373):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
02-07 17:05:45.565: W/System.err(17373):    at dalvik.system.NativeStart.main(Native Method)

我正在用这样的方法调用函数:

SmsManager mgr = SmsManager.getDefault();
Log.d(TAG, "Number: " + number);
Log.d(TAG, "Message: " + msg);
mgr.sendTextMessage(number, null, msg,null,null);

number =“0401234567” msg =“T”

问题是,这在模拟器上完美运行。正如您所期望的那样。但不是我的Galaxy S2。我希望我正确格式化数字。我也尝试过包含国家代码,但问题是一样的。哦,是的,消息只有一个字符长,所以问题不能太长。并且应该允许scAddress和PendingIntents为空。

我的想法已经不多了。我唯一想到的是数字格式错误或者S2 OS中存在大量错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

好的,问题解决了。我将手机更新到Android 4.1.2(之前有ICS),现在它可以完美运行。我没有修改代码。显然操作系统本身有问题。

答案 1 :(得分:0)

https://developer.android.com/reference/android/telephony/SmsManager.html#sendTextMessage(java.lang.String,%20java.lang.String,%20java.lang.String,%20android.app.PendingIntent,%20android.app.PendingIntent)

发送待处理的意向对象并检查其无效的原因。待处理的intent对象将包含

RESULT_ERROR_GENERIC_FAILURE
RESULT_ERROR_RADIO_OFF
RESULT_ERROR_NULL_PDU

如API中所示