我希望我的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(具有相同的收件人和消息)。你能告诉我,为什么我的应用程序无法发送短信?我会感激每一个答案:)
答案 0 :(得分:1)
我很快找到了解决问题的方法。当我输入电话号码而不是联系人姓名时,没有例外。现在我的应用程序可以毫无问题地发送短信:)