Android 推送时wmqtt.jar包引入在android 4.0下报MqttException:NULL报错的解决办法
来源:互联网 发布:spring源码深度百度云 编辑:程序博客网 时间:2024/04/30 01:36
在我们做的项目中需要一个推送消息的功能,在网上找了下相关的技术之后(有很多分析Android推送技术优劣的文章,这里就不再多说了),决定采用IBM的MQTT协议进行推送,一来这个协议比较简单方便,二来这种方式用的比较多,网上有现成的程序可以借鉴。
但是,根据网上的文章配置好了PHP的服务器端之后,下载了
AndroidPushNotificationsDemo-master
这个例子程序,先是在eclipse中打开编译运行只后总是出错。网上说是wmqtt这个jar包没有导入成功,于是我又重新建了个libs文件夹把jar包又导入了一次,发现还是会出错
08-23 02:28:44.404: E/AndroidRuntime(282): java.lang.VerifyError: com.tokudu.demo.PushService
08-23 02:28:44.404: E/AndroidRuntime(282): at com.tokudu.demo.PushActivity$1.onClick(PushActivity.java:32)
08-23 02:28:44.404: E/AndroidRuntime(282): at android.view.View.performClick(View.java:2408)
08-23 02:28:44.404: E/AndroidRuntime(282): at android.view.View$PerformClick.run(View.java:8816)
08-23 02:28:44.404: E/AndroidRuntime(282): at android.os.Handler.handleCallback(Handler.java:587)
08-23 02:28:44.404: E/AndroidRuntime(282): at android.os.Handler.dispatchMessage(Handler.java:92)
08-23 02:28:44.404: E/AndroidRuntime(282): at android.os.Looper.loop(Looper.java:123)
08-23 02:28:44.404: E/AndroidRuntime(282): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-23 02:28:44.404: E/AndroidRuntime(282): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 02:28:44.404: E/AndroidRuntime(282): at java.lang.reflect.Method.invoke(Method.java:521)
08-23 02:28:44.404: E/AndroidRuntime(282): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-23 02:28:44.404: E/AndroidRuntime(282): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-23 02:28:44.404: E/AndroidRuntime(282): at dalvik.system.NativeStart.main(Native Method)
网上都是在说是因为wmqtt包导入不成功引起的,而且这个解决方法到处都是,我又重新试了好多次都不行。因为我用的是android studio来开发的,所以我又把代码转到了android studio中试了一下还是不行。通过logcat的追踪信息显示的信息
01-05 15:04:40.873 26196-26196/com.app.yiyeqianshan:push01 I/PushService﹕ Connectivity changed: connected=true
01-05 15:04:40.873 26196-26196/com.app.yiyeqianshan:push01 I/PushService﹕ Reconnecting...
01-05 15:04:40.873 26196-26196/com.app.yiyeqianshan:push01 I/PushService﹕ Connecting...
01-05 15:04:40.875 26196-26196/com.app.yiyeqianshan:push01 I/PushService﹕ MqttException: NULL XXX
01-05 15:04:40.876 26196-26196/com.app.yiyeqianshan:push01 I/PushService﹕ Rescheduling connection in 160000ms.
这说明包导入是没有问题的,只是在connet的时候抛出异常了,是包内部函数的问题。
仔细比对了我的程序和例子程序之后发现问题出在minSdkVersion=3上面。
选择Min SDK Version 低于 10 即可。
并且不要填写 Target/Max SDK Version ,
project.properties 文件中的版本控制这当前编译时调用的 android 支持包的版本。
由于我们用了fragment,最低支持版本是10,这个就没办法了。后来在网上看到了一种解决方案,就是在调用之前加上
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
这个就OK了。问题解决。。。
- Android 推送时wmqtt.jar包引入在android 4.0下报MqttException:NULL报错的解决办法
- 解决Wmqtt在android 4.0下报MqttException:NULL错误
- android采用wmqtt.jar进行推送
- android引入第三方jar包后打包报错
- 关于android项目引入android-support-v4.jar混淆报错的解决办法
- 在本地仓库有jar包的情况下,Maven工程依然报错Missing jar包的解决办法
- maven引入jar包依赖报错
- android更新jar包直接报错Unable to execute dex: java.nio.BufferOverflowException.解决办法
- Android Studio报错 :在Android Studio中如何将依赖的jar包放在SDK的android.jar前?
- Android Studio下引入jar包
- 关于android下引入jar包的坑爹错误
- android源码平台下JAR包的引入与编译
- Android -- 源码平台下JAR包的引入与编译
- Android在搭建时关于annotations.jar 不存在报错
- View.setId在Android studio下使用报错的解决办法
- 引入jar包但是报错java.lang.NoClassDefFoundError
- 在android上导入第三方jar包 报错:Could not find class
- 引入LeakCanary报错的解决办法
- 2015年的目标
- 日本経済の課題―暮らしを守る脱デフレに
- 内存访问越界
- 黑马程序员学习总结__多线程
- iOS 修改工程名字
- Android 推送时wmqtt.jar包引入在android 4.0下报MqttException:NULL报错的解决办法
- 设置背景图在控件的某个位置(上下左右)
- Android上如何确保消息被推送到
- 正则表达式
- a configuration error occured during startup
- Appium键盘处理
- 高效同步数据的方法及效率测试--边打包边压缩边传输边解压20150105
- C# Datatable导出CSV算法
- HowTo: Bash Extract Filename And Extension In Unix / Linux