近期因公司需求,更新了友盟最新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,期待分享)