0

我正在尝试使用 SMSManager 发送带有中文字符的短信。它适用于英语和德语,但不幸的是不适用于中文。

我的日志:

    01-07 20:23:56.200: W/System.err(15742): java.lang.NullPointerException
01-07 20:23:56.200: W/System.err(15742):    at android.os.Parcel.readException(Parcel.java:1266)
01-07 20:23:56.204: W/System.err(15742):    at android.os.Parcel.readException(Parcel.java:1248)
01-07 20:23:56.204: W/System.err(15742):    at com.android.internal.telephony.ISms$Stub$Proxy.sendText(ISms.java:561)
01-07 20:23:56.204: W/System.err(15742):    at android.telephony.SmsManager.sendTextMessage(SmsManager.java:109)
01-07 20:23:56.204: W/System.err(15742):    at com.app.myapp.MainActivity.sendSms(MainActivity.java:158)
01-07 20:23:56.204: W/System.err(15742):    at com.app.myapp.MainActivity.buttonClick(MainActivity.java:103)
01-07 20:23:56.204: W/System.err(15742):    at java.lang.reflect.Method.invokeNative(Native Method)
01-07 20:23:56.204: W/System.err(15742):    at java.lang.reflect.Method.invoke(Method.java:521)
01-07 20:23:56.204: W/System.err(15742):    at android.view.View$1.onClick(View.java:2067)
01-07 20:23:56.204: W/System.err(15742):    at android.view.View.performClick(View.java:2408)
01-07 20:23:56.204: W/System.err(15742):    at android.view.View$PerformClick.run(View.java:8818)
01-07 20:23:56.204: W/System.err(15742):    at android.os.Handler.handleCallback(Handler.java:587)
01-07 20:23:56.204: W/System.err(15742):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-07 20:23:56.204: W/System.err(15742):    at android.os.Looper.loop(Looper.java:123)
01-07 20:23:56.204: W/System.err(15742):    at android.app.ActivityThread.main(ActivityThread.java:4627)
01-07 20:23:56.208: W/System.err(15742):    at java.lang.reflect.Method.invokeNative(Native Method)
01-07 20:23:56.208: W/System.err(15742):    at java.lang.reflect.Method.invoke(Method.java:521)
01-07 20:23:56.208: W/System.err(15742):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
01-07 20:23:56.208: W/System.err(15742):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
01-07 20:23:56.208: W/System.err(15742):    at dalvik.system.NativeStart.main(Native Method)

这就是我发送短信的方式

SmsManager smsManager = SmsManager.getDefault();
                    for (int i = 0; i < numbers.size(); i++) {
                        smsManager.sendTextMessage(numbers.get(i), null,
                                message, null, null);
                    }

有任何想法吗?提前致谢。

4

1 回答 1

0

我有同样的问题,我可以解决它只是限制字符数。在英语中,允许 160 个字符。在中文中,只能使用 70 个字符(每个字符需要更多的字节来表示)。

因此,要对其进行测试,只需将 message 替换为 message.substring(0, 69) 即可。

要正确解决问题,必须发送拆分消息,检查: http: //www.programering.com/a/MTM4EjMwATE.html

于 2016-09-28T09:54:44.167 回答