надеюсь, я смогу получить помощь по проблеме, которая у меня возникла. Я использую класс «android.telephony.SmsManager» для отправки текстового сообщения данных через функцию API:
«sendDataMessage (...)» и каждый раз, когда вызывается функция, я получаю исключение нулевого указателя. Я провел свое исследование и обнаружил, что это может быть вызвано попыткой отправить слишком большое сообщение с данными (порядка 133 байтов или более). Я посылаю 5 байтов - так что я знаю, что я не превышаю лимит. Я не получаю исключение нулевого указателя на эмуляторе (хотя я знаю, что есть другие проблемы с эмулятором, неправильно отправляющим SMS-сообщения с данными, поэтому, возможно, я получил бы ошибку, если эмулятор работал). Мой код выглядит следующим образом:
SmsManager sm = SmsManager.getDefault();
int SMS_PORT = 8091;
sm.sendDataMessage("5555551212", null, (short)SMS_PORT, "hello".getBytes(), null, null);
В соответствии с документацией API, 3 аргумента, которые у меня есть как "ноль" выше, могут быть нулевыми. Я также попытался отправить намерения в последние 2 аргумента и строку во втором аргументе, но все еще получаю исключение нулевого указателя.
Обратите внимание, что я получаю это исключение при запуске на своем телефоне Android. Я использую пряники и использую правильный уровень API для ГБ. Мой файл Android Manafest имеет необходимые разрешения для отправки SMS.
LogCat исключения нулевого указателя выглядит следующим образом:
E/AndroidRuntime( 1690): FATAL EXCEPTION: main
E/AndroidRuntime( 1690): java.lang.IllegalStateException: Could not execute method of the activity
E/AndroidRuntime( 1690): at android.view.View$1.onClick(View.java:2144)
E/AndroidRuntime( 1690): at android.view.View.performClick(View.java:2485)
E/AndroidRuntime( 1690): at android.view.View$PerformClick.run(View.java:9081)
E/AndroidRuntime( 1690): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( 1690): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 1690): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 1690): at android.app.ActivityThread.main(ActivityThread.java:3686)
E/AndroidRuntime( 1690): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1690): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 1690): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
E/AndroidRuntime( 1690): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
E/AndroidRuntime( 1690): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 1690): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime( 1690): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1690): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 1690): at android.view.View$1.onClick(View.java:2139)
E/AndroidRuntime( 1690): ... 11 more
E/AndroidRuntime( 1690): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 1690): at android.os.Parcel.readException(Parcel.java:1328)
E/AndroidRuntime( 1690): at android.os.Parcel.readException(Parcel.java:1276)
E/AndroidRuntime( 1690): at com.android.internal.telephony.ISms$Stub$Proxy.sendData(ISms.java:359)
E/AndroidRuntime( 1690): at android.telephony.SmsManager.sendDataMessage(SmsManager.java:212)
E/AndroidRuntime( 1690): at com.test.datasmstest.DataSMSTestActivity.DoClick(DataSMSTestActivity.java:55)
E/AndroidRuntime( 1690): ... 14 more
Есть идеи - будет ли полезной дополнительная информация для решения этой проблемы?
Спасибо!