- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望我能在我遇到的问题上得到一些帮助。我正在使用“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 文档,我在上面作为“null”的 3 个参数允许为 null。我还尝试将 Intent 发送到最后 2 个参数,并在第二个参数中发送一个字符串,但仍然出现空指针异常。
请注意,当我在我的 Android 手机上运行时出现此异常。我在 gingerbread 上运行,并且为 GB 使用正确的 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
任何想法 - 更多信息是否有助于解决此问题?
谢谢!
最佳答案
我已经弄清楚发生了什么事 - 我使用的是 sprint 手机,而 sprint 不允许数据(二进制)文本消息。我之所以知道这一点,是因为我采用了生成上述空指针异常的同一个应用程序,并在非 sprint 手机(在本例中为 t-mobile)上运行它。数据短信发送成功。我将它发送到我的 sprint 手机上的一个端口,发送短信的 t-mobile 手机收到了以下基于文本的消息:
[Free Msg: Unable to send message to 15555551212. Please try again without a symbol in the text.]
15555551212 是我的冲刺电话号码所在的位置(出于显而易见的原因隐藏)。
因此,上面的代码似乎在某些运营商的手机上运行良好,但在其他手机上运行不佳。我猜我手机上 android 的 sprints 实现没有正确实现 sendDataMessage(或故意杀死该函数),因此它抛出了一个空指针异常。
关于android - sendDataMessage 总是导致空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760735/
希望我能在我遇到的问题上得到一些帮助。我正在使用“android.telephony.SmsManager”类通过调用 API 函数发送数据文本消息:“sendDataMessage(...)”,每次
在我可能遇到的几乎所有示例的帮助下,我尝试使用 android.telephony.SmsManager 的 sendDataMessage()。但没有成功。 . [如果您想查看代码,只需检查 mob
我使用的是 Android SmsManager 提供的 API sendDataMessage发送 SMS 消息并注意到行为似乎因不同的设备而改变,这是我的观察结果。 我能够成功发送消息 在所有设备
我在不同的论坛上了解到,我们可以在一条 SMS 消息中发送 160 个(7 位)字符和 140 个(8 位)字节。 我想在一条短信中发送 140 字节的数据。我可以成功发送最多 133 字节但不能超过
我的意思是唯一的区别是端口参数。这与 CDMA 和 GSM 电话之间有什么关系吗?。我有这个查询是因为当我尝试从没有端口的 CDMA 发送短信时它运行良好但使用端口我的应用程序崩溃了。通过查看日志,它
我是一名优秀的程序员,十分优秀!