近期因公司需求,更新了友盟最新SDK,起初测试未发现问题。
APP上线后通过Crashlytics后台反馈发现部分5.0以上机型(不分品牌)在调用友盟的接口分享到QQ空间时,发生 FileNotFoundException。
错误指向
public UMImage(Context var1, File var2) { this.compressStyle = UMImage.CompressStyle.SCALE; this.compressFormat = CompressFormat.JPEG; this.i = 0; this.a(var1, var2); }
在询问了友盟的客服后,友盟客服小姐姐表示 恩,您反馈的问题我们已经确认,但是我们暂时没有解决方案哦。
bug肯定不能扔着不管的,用户可不管是谁的问题。
解决方案 : 源码我们肯定改不了,所以想一个折中的办法,既然在分享时图片的地址 FileNotFoundException。
这个构造方法肯定是走不通了。打开UmImage的源码发现存在另一个构造方法
public UMImage(Context var1, String var2) { super(var2); this.compressStyle = UMImage.CompressStyle.SCALE; this.compressFormat = CompressFormat.JPEG; this.i = 0; this.a((Context)(new WeakReference(var1)).get(), var2); }
传入Activity 与 图片url 同样可以分享。
Ok,问题搞定。
(这么搞虽然一时可以解决,但是肯定不是最终解决方案,期待新版SDK能修复这个问题。也许有大神已经找到错误原因,用另外的方法解决了这个Bug,期待分享)