sendMultipartTextMessage抛出NullPointerException,但收件人和邮件不是null

时间:2015-01-01 16:22:48

标签: java android nullpointerexception smsmanager

我希望我的Android应用能够发送短信,但遗憾的是我无法实现这一点。每次,当应用程序尝试在我的Sony Xperia T3(Android 4.4.2)中运行sendMultipartTextMessage方法时,它会因来自该方法的NullPointerException而崩溃:

java.lang.NullPointerException
        at android.os.Parcel.readException(Parcel.java:1471)
        at android.os.Parcel.readException(Parcel.java:1419)
        at com.android.internal.telephony.ISms$Stub$Proxy.sendText(ISms.java:593)
        at android.telephony.SmsManager.sendTextMessage(SmsManager.java:107)
        at android.telephony.SmsManager.sendMultipartTextMessage(SmsManager.java:257)
        at com.mg.polassis.MainActivity.sms(MainActivity.java:280)
        at com.mg.polassis.MainActivity.przetworz(MainActivity.java:232)
        at com.mg.polassis.MainActivity$listener.onResults(MainActivity.java:107)
        at android.speech.SpeechRecognizer$InternalListener$1.handleMessage(SpeechRecognizer.java:448)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5137)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
        at dalvik.system.NativeStart.main(Native Method)

这是负责发送短信的代码片段:

private String sms_kontakt = "Jola";
private String sms_body = "Test";
public void sms(String tekst, int kat)
{
   (...)
   SmsManager sms = SmsManager.getDefault();
   ArrayList<String> txt = sms.divideMessage(sms_body);
   sms.sendMultipartTextMessage(sms_kontakt, null, txt, null, null);
   (...)
}

如您所见,sms_kontakt和sms_body变量不为空,所以我不知道,出了什么问题。 AndroidManifest.xml中有适当的权限(我不确定WRITE_SMS是否必须):

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />

当我使用标准的sendTextMessage方法时,它也会抛出NullPointerException(具有相同的收件人和消息)。你能告诉我,为什么我的应用程序无法发送短信?我会感激每一个答案:)

1 个答案:

答案 0 :(得分:1)

我很快找到了解决问题的方法。当我输入电话号码而不是联系人姓名时,没有例外。现在我的应用程序可以毫无问题地发送短信:)