Giter Site home page Giter Site logo

meiqiasdk-android's People

Contributors

bingoogolapple avatar ksxkq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meiqiasdk-android's Issues

启动美洽客服400报错

Intent intent = new MQIntentBuilder(mContext,MQConversationActivity.class)
// .setClientInfo(clientInfo)
.build();
mContext.startActivity(intent);
就报错400,path[track_id],之前没出现过这个问题

soundPool异常

Could not find class 'android.media.SoundPool$Builder', referenced from method com.meiqia.meiqiasdk.util.MQSoundPoolManager.
在android4.4.4的红米上会报这个错。原因是这个Builder的api level是21

建议

什么时候可以支持okhttp3.X ?
另外图像处理可以加上fresco,个人感觉

自定义界面

怎么实现自定义的聊天界面。比如在增加个控件等。

6.0权限处理问题

当客户app用的是targetSdkVersion在23以下时候,引用你们的sdk,sdk的权限处理代码用的是新的,此时调用ContextCompat.checkSelfPermission,会出现,无法继续下去的问题。 应该加入判断代码,23以下直接按已经授权的逻辑走。。。一个场景就是点击会话窗口的voice按钮,没反应

3.1.4版本有空指针bug

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.meiqia.core.bean.MQClient.getEnterpriseId()' on a null object reference
at com.meiqia.core.b.a(Unknown Source)
at com.meiqia.core.bb.onSuccess(Unknown Source)
at com.meiqia.core.c.onSuccess(Unknown Source)
at com.meiqia.core.s.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5803)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1009)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:804)

几个异常问题

java.lang.ClassCastException
com.meiqia.meiqiasdk.widget.MQClientItem cannot be cast to com.meiqia.meiqiasdk.widget.MQRobotItem
com.meiqia.meiqiasdk.util.MQChatAdapter.getView(MQChatAdapter.java:139)

java.lang.RuntimeException
请调用MQConfig.init方法初始化美洽 SDK,并传入MQImageLoader接口的实现类
com.meiqia.meiqiasdk.util.MQConfig.getImageLoader(MQConfig.java:78)
com.meiqia.meiqiasdk.widget.MQAgentItem.setMessage(MQAgentItem.java:47)
com.meiqia.meiqiasdk.util.MQChatAdapter.getView(MQChatAdapter.java:133)

java.lang.SecurityException
ConnectivityService: Neither user 10208 nor current process has android.permission.ACCESS_NETWORK_STATE.
java.lang.RuntimeException:Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in com.meiqia.core.ce@ac8f0e7
android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:874)
......
Caused by:
java.lang.SecurityException:ConnectivityService: Neither user 10208 nor current process has android.permission.ACCESS_NETWORK_STATE.
android.os.Parcel.readException(Parcel.java:1540)
android.os.Parcel.readException(Parcel.java:1493)
android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:968)
android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:614)
com.meiqia.core.b.l.f(Unknown Source)
com.meiqia.core.ce.onReceive(Unknown Source)

5.0 vivo vivo X5Pro D 打开数据库崩溃

sdk 版本 3.4.0

android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:214)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:198)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:836)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:821)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:714)
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:1252)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:267)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at com.meiqia.core.bz.c(Unknown Source)
at com.meiqia.core.bz.a(Unknown Source)
at com.meiqia.core.bz.a(Unknown Source)
at com.meiqia.core.d$a.a(Unknown Source)
at com.meiqia.core.da.a(Unknown Source)
at com.meiqia.core.du.onResponse(Unknown Source)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:135)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)

NPE:at com.meiqia.core.a.c.b(Unknown Source)

Fatal Exception: java.lang.NullPointerException
at com.meiqia.core.a.c.b(Unknown Source)
at com.meiqia.core.cz.a(Unknown Source)
at com.meiqia.core.dy.onResponse(Unknown Source)
at okhttp3.RealCall$AsyncCall.execute(Paramount:153)
at okhttp3.internal.NamedRunnable.run(Paramount:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)

图片预览页的启动可能会报android.os.TransactionTooLargeException

由于进入图片预览页MQPhotoPickerPreviewActivity时是通过startActivityForResult的形式启动的,且会将遍历用户手机里图片的整个路径列表作为Intent的参数传给MQPhotoPickerPreviewActivity,
image
image
所以,如果用户的手机里有非常多的图片,例如有1万张图片(现在的手机一般都不止32G,所以用户累计存到几千张甚至上万张图片都是有可能的),那么1万个图片地址的列表必定会超过intent的最大传输限制

MQConversationActivity 内存泄漏

com.meiqia.meiqiasdk.activity.MQConversationActivity has leaked:

  • GC ROOT static com.meiqia.meiqiasdk.util.MQAudioRecorderManager.sInstance
  • references com.meiqia.meiqiasdk.util.MQAudioRecorderManager.mCallback
  • references com.meiqia.meiqiasdk.widget.MQRecorderKeyboardLayout.mContext
  • leaks com.meiqia.meiqiasdk.activity.MQConversationActivity instance

检测信息来自 LeakCanary

fragment

有怎么接入fragment的教程吗

Android启动在线客户 2s左右闪退

java.lang.NoClassDefFoundError: com.meiqia.core.cp
at com.meiqia.core.MeiQiaService.a(Unknown Source)
at com.meiqia.core.MeiQiaService.onStartCommand(Unknown Source)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4062)
at android.app.ActivityThread.access$2400(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1897)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Process: com.shirble.retailer.app, PID: 22938
java.lang.NoClassDefFoundError: com.meiqia.core.cp
at com.meiqia.core.MeiQiaService.a(Unknown Source)
at com.meiqia.core.MeiQiaService.onStartCommand(Unknown Source)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4062)
at android.app.ActivityThread.access$2400(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1897)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

code=400

美洽消息发送失败code = 400 msg = details = {"message":"分配客服失败,请稍后重试!"},这种情况证明解决。

java.lang.NoSuchMethodError: No virtual method load(Ljava/lang/String;)Lcom/bumptech/glide/DrawableTypeRequest

04-22 12:21:34.003 E/AndroidRuntime( 5119): at com.meiqia.meiqiasdk.imageloader.MQGlideImageLoader.displayImage(MQGlideImageLoader.java:26)
04-22 12:21:34.003 E/AndroidRuntime( 5119): at com.meiqia.meiqiasdk.imageloader.MQImage.displayImage(MQImage.java:61)
04-22 12:21:34.003 E/AndroidRuntime( 5119): at com.meiqia.meiqiasdk.chatitem.MQBaseBubbleItem.fillContent(MQBaseBubbleItem.java:147)
04-22 12:21:34.003 E/AndroidRuntime( 5119): at com.meiqia.meiqiasdk.chatitem.MQBaseBubbleItem.setMessage(MQBaseBubbleItem.java:115)
04-22 12:21:34.003 E/AndroidRuntime( 5119): at com.meiqia.meiqiasdk.util.MQChatAdapter.getView(MQChatAdapter.java:144)

Glide V4出错

看了下demo,里面的Glide图片加载器Glide的有些方法在4.0不存在了

SQLiteFullException:android.database.sqlite.SQLiteFullException: database or disk is full (code 13)

#0. Crashed: OkHttp Dispatcher
at android.database.sqlite.SQLiteConnection.nativeExecute(SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:555)
at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:437)
at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:401)
at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:522)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:262)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at com.meiqia.core.cc.b(Unknown Source)
at com.meiqia.core.cc.a(Unknown Source)
at com.meiqia.core.cc.a(Unknown Source)
at com.meiqia.core.d$a.onSuccess(Unknown Source)
at com.meiqia.core.dd.a(Unknown Source)
at com.meiqia.core.dy.onResponse(Unknown Source)
at okhttp3.RealCall$AsyncCall.execute(Paramount:153)
at okhttp3.internal.NamedRunnable.run(Paramount:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)

几个尚未 Material Design 的地方

3.1.0 改成 Material Design 了,可喜可贺!

几个不足的地方:

  • 顶栏还不是 Toolbar,返回图标也不是 Material Design 的图标
  • MQTheme 继承自老的 @android:style/Theme.Light.NoTitleBar,导致滚动条还是 2.X 的风格。建议改成 AppCompat 里的 @style/Theme.AppCompat.Light.NoActionBar

3个空指针问题

java.lang.NullPointerException
Attempt to invoke virtual method 'java.lang.String com.meiqia.core.bean.MQClient.getTrackId()' on a null object reference

java.lang.NullPointerException
com.meiqia.core.MeiQiaService.a(Unknown Source)

java.lang.NullPointerException
Attempt to invoke virtual method 'java.lang.String com.meiqia.core.bean.MQClient.getEnterpriseId()' on a null object reference
com.meiqia.core.b.a(Unknown Source)

没有支持国际化吗

为什么自定义这么麻烦.干嘛不把 Activity 做成一个 父类,然后定义某个接口作为回调,让使用者可以干预 UI 的一些部分.

另外,能做下简单的国际化支持吗.

java.lang.IllegalStateException - 3.4.6

java.lang.IllegalStateException: Not allowed to start service Intent { act=ACTION_OPEN_SOCKET cmp=com.wannar.wannar_adroid2/com.meiqia.core.MeiQiaService }: app is in background uid UidRecord{b3281ca u0a225 TPSL bg:+30m51s605ms idle procs:1 seq(0,0,0)} 	
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1577) 	
at android.app.ContextImpl.startService(ContextImpl.java:1532) 	
at android.content.ContextWrapper.startService(ContextWrapper.java:664) 	
at com.meiqia.core.bv.a(Unknown Source:12) 	
at com.meiqia.core.a.f(Unknown Source:9) 	
at com.meiqia.meiqiasdk.controller.a.d(SourceFile:282) 	
at com.meiqia.meiqiasdk.activity.MQConversationActivity.onStart(SourceFile:248) 	
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) 	
at android.app.Activity.performStart(Activity.java:7165) 	
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2975) 	
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) 	
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) 	
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) 	
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) 	
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 	
at android.os.Handler.dispatchMessage(Handler.java:106) 	
at android.os.Looper.loop(Looper.java:193) 	
at android.app.ActivityThread.main(ActivityThread.java:6718) 	
at java.lang.reflect.Method.invoke(Native Method) 	
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 	
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

Language support

Unable to get support for multilanguage. I need language change at run time how to do this.

后台报错,请问是什么问题?

java.lang.ClassCastException: com.meiqia.meiqiasdk.chatitem.MQClientItem cannot be cast to com.meiqia.meiqiasdk.chatitem.MQTimeItem
at com.meiqia.meiqiasdk.util.MQChatAdapter.getView(MQChatAdapter.java:156)
at android.widget.AbsListView.obtainView(AbsListView.java:2445)
at android.widget.HwAbsListView.obtainView(HwAbsListView.java:944)
at android.widget.ListView.makeAndAddView(ListView.java:2078)
at android.widget.ListView.fillUp(ListView.java:834)
at android.widget.ListView.layoutChildren(ListView.java:1811)
at android.widget.AbsListView.onLayout(AbsListView.java:2243)
at android.widget.HwAbsListView.onLayout(HwAbsListView.java:351)

NPE:Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.optString(java.lang.String)' on a null object reference

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.optString(java.lang.String)' on a null object reference
at com.meiqia.core.ee.a(Unknown Source)
at com.meiqia.core.dy.onResponse(Unknown Source)
at okhttp3.RealCall$AsyncCall.execute(Paramount:153)
at okhttp3.internal.NamedRunnable.run(Paramount:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)

#0. Crashed: OkHttp Dispatcher
at com.meiqia.core.ee.a(Unknown Source)
at com.meiqia.core.dy.onResponse(Unknown Source)
at okhttp3.RealCall$AsyncCall.execute(Paramount:153)
at okhttp3.internal.NamedRunnable.run(Paramount:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)

【未读消息】在工单中回复用户,客户端调用获取未读消息接口获取不到未读消息

用户给美洽留言后,留言自动进入美洽的工单列表而不是对话列表。如果在工单中回复用户,在android端调用getUnreadMessages接口,获取到的list一直是空的。

而在对话中回复离线的用户,android端通过此接口获取到的list内容是正确的。

iOS端目前还没试。

这样的话没法提示用户有新消息,达不到需求。

美洽sdk版本:3.3.6
升级到3.3.9之后也是这样。

NPE - 3.4.0

07-19 12:59:45.894 W/System.err( 5996): java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
07-19 12:59:45.895 W/System.err( 5996): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
07-19 12:59:45.895 W/System.err( 5996): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
07-19 12:59:45.895 W/System.err( 5996): at org.json.JSONObject.(JSONObject.java:156)
07-19 12:59:45.896 W/System.err( 5996): at org.json.JSONObject.(JSONObject.java:173)
07-19 12:59:45.896 W/System.err( 5996): at com.meiqia.core.bu.g(Unknown Source)
07-19 12:59:45.896 W/System.err( 5996): at com.meiqia.core.a.i(Unknown Source)
07-19 12:59:45.896 W/System.err( 5996): at com.meiqia.meiqiasdk.f.k.a(SourceFile)
07-19 12:59:45.896 W/System.err( 5996): at com.meiqia.meiqiasdk.f.k.(SourceFile)

空指针

Caused by:
java.lang.NullPointerException:
com.meiqia.meiqiasdk.activity.MQPhotoPreviewActivity$ImagePageAdapter.getCount(MQPhotoPreviewActivity.java:279)
android.support.v4.view.ViewPager.setAdapter(ViewPager.java:495)
com.meiqia.meiqiasdk.activity.MQPhotoPreviewActivity.processLogic(MQPhotoPreviewActivity.java:142)
com.meiqia.meiqiasdk.activity.MQPhotoPreviewActivity.onCreate(MQPhotoPreviewActivity.java:102)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.