报错信息:
2019-01-18 11:17:00.550 10366-11148/com.test E/CrashReport: java.lang.NullPointerException: Attempt to get length of null array
at com.umeng.socialize.a.a.a(SocialRouter.java:614)
at com.umeng.socialize.a.a.a(SocialRouter.java:646)
at com.umeng.socialize.UMShareAPI$4.a(UMShareAPI.java:240)
at com.umeng.socialize.UMShareAPI$4.doInBackground(UMShareAPI.java:231)
at com.umeng.socialize.common.QueuedWork$UMAsyncTask$1.run(QueuedWork.java:136)
at java.lang.Thread.run(Thread.java:784)
分析:
查看了好久,开始以为是友盟key或者qq、微信的key不对导致的,结果调整之后还是不行。最后还是回归代码,根据报错堆栈,查看代码,“var3.add(SHARE.LOCALTHUMB + var8.getThumbImage().asBinImage().length);”
至此才豁然开朗,这是分享时的图片。
那就应该是分享时传入的图片为空导致的。
解决方案:后经验证,确实如上。不过因自己对友盟的分享做过一层封装,如果调用者确实没有图片传入的化,在构造分享对象时就不要设置图片了。
原始代码为:
UMWeb umWeb;
umWeb =new UMWeb(mShareInfo.url);
umWeb.setTitle(mShareInfo.title);
umWeb.setDescription(mShareInfo.description);
umWeb.setThumb(new UMImage(mActivity, mShareInfo.thumbUrl));
修改方案为,设置umWeb前,对各属性做null判断。不为null才进行设置。