代码之家  ›  专栏  ›  技术社区  ›  Ragunath Jawahar cephus

SmsManager导致com.android.phone强制随机关闭

  •  1
  • Ragunath Jawahar cephus  · 技术社区  · 15 年前

    我正在使用SmsManager从我的应用程序发送文本消息。代码片段是

    smsManager.sendTextMessage(number, null, content, null, null);
    

    对于少于160个字符的邮件。对于我使用的多部分消息,

    ArrayList<String> parts = smsManager.divideMessage(content);
    sMan.sendMultipartTextMessage(number, null, parts, null, null);
    

    这些语句导致进程com.android.phone意外停止请以随机方式重试。我不明白怎么回事。

    这是我得到的堆栈跟踪:

    java.lang.NullPointerException
    E/AndroidRuntime( 1143):    at com.android.internal.telephony.SMSDispatcher.handleSendComplete(SMSDispatcher.java:741)
    E/AndroidRuntime( 1143):    at com.android.internal.telephony.SMSDispatcher.handleMessage(SMSDispatcher.java:407)
    E/AndroidRuntime( 1143):    at android.os.Handler.dispatchMessage(Handler.java:99)
    E/AndroidRuntime( 1143):    at android.os.Looper.loop(Looper.java:123)
    E/AndroidRuntime( 1143):    at android.app.ActivityThread.main(ActivityThread.java:4603)
    E/AndroidRuntime( 1143):    at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime( 1143):    at java.lang.reflect.Method.invoke(Method.java:521)
    E/AndroidRuntime( 1143):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    E/AndroidRuntime( 1143):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    E/AndroidRuntime( 1143):    at dalvik.system.NativeStart.main(Native Method)
    

    任何指点都将非常感谢。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Ragunath Jawahar cephus    15 年前
    smsManager.sendTextMessage(number, null, content, null, null);
    

    从技术上讲 无效的 的参数 哨兵 送货人 不会引起任何问题。但我的申请不是这样的。我在Android市场上看到很多应用程序都有同样的问题,用户给它们的评级是1星级。我用无关紧要的意图重新绘制了空参数,现在使用它们没有问题。

    PendingIntent sent = PendingIntent.getBroadcast(context, 0, new Intent(), 0);
    PendingIntent delivered = PendingIntent.getBroadcast(context, 0, new Intent(), 0);
    smsManager.sendTextMessage(number, null, content, sent, delivered);
    

    现在代码可以正常工作了。