1.问题
a.遇到java.lang.UnsatisfiedLinkError 异常
b.接入成功之后发送图片文件拍照之后 本地聊天列表不显示(可能对方也收不到)
2.解决方案
问题a解决方案:
问题a.在环信社区都有解决方案(java.lang.UnsatisfiedLinkError: 的问题)其实主要是jni的问题 看了下原理就是armeabi不要这个包 将armeabi的文件考到armeabi-v7a ,但是我下载是3.3.2版本的根本就没有这个armeabi包 已经存在armeabi-v7a。我个人认为应该是没找到相应的so文件的问题。因此本人查看project目录 这是在EaseUI中存在不存在armeabi-v7a等相关包 于是试着将下载的sdk中lib文件拷贝到EaseUI中Ilib和app的lib。妈蛋!居然OK了。
总结:
接入环信时,如果不使用环信的UI(EASEUI)就一般不会出现遇到java.lang.UnsatisfiedLinkError 异常。这是使用官方接入方式没问题。BUT,如果使用EaseUI的话 那么在EaseUI的话那么,在EaseUI也要拷入相应lib(重点是armeabi-v7a相关文件夹)。 PS:如果使用EaseUI的话,千万不要使用gradle导入环信SDK,使用手动导入的方式。不信的话 你们可以试试。具体报什么错误我忘记了。
问题b解决方案:
问题b很奇葩,本人在接入环信时,写了个小Demo,可以发图片文件拍照发图片。But,接入项目工程时,发送图片,文件,拍照图片时,消息不显示,也没有发出去。在环信社区也没有找到相关问题,然后本人想了下出现这种问题的共性都是挑战界面后再回退到自己的界面。由于本人接入的聊天是环信EaseChatFragment聊天,调试打断点看看onActivityResult中进入没有。因为从聊天到打开其它Activity在回退到之前界面这个过程必定涉及到onActivityResult的回调。结果调试证明,拍照之后返回时并没有进入onActivityResult。知道问题根源,就好办了。因为是在EaseChatFragment调用的是startActivityForResult()而不是getActivty().startActivityForResult()。这个OK没问题。然后就只是一种情况就是EaseChatFragment的持有者Activity重写了onActivityResult()。结果本人一看,本人的ChatActivity的父类果然重写了。要么不重写onActivityResult,要么ChatActivity就换一个父类就OK了。
总结:
当出现发送图片,文件等一系列需要跳转界面,并且需要onActivityResult获取返回值时这时。首先检查跳转方法是否是startActivityForResult()。如果是startActivityForResult(),在检查该Fragments的Activity是否是重写了onActivityResult,是的话就不能fragment的Activity重写。PS:如果 使用startActivityForResult()进行跳转 并且Activity没有重写,还是出现不能回调Fragment的onActivityResult。那么就是你使用了嵌套Fragment了。解决嵌套Fragemnt不能回调onActivityResult