Android开发中应用在小米手机上出现的bug汇总
2017-08-04 22:23
363 查看
Android开发应用在小米手机上出现的bug汇总
一、输入框第一次输入英文时候不响应del事件
小米手机输入框第一次输入英文时候不响应del事件,输入数字有效(网上说vivo等也有类似情况)。我在代码中写了个自定义MultiAutoCompleteTextView的控件(这个控件是继承EditText的),然后通过如下代码设置了按删除建的回调方法。我这里发现的现象是,在小米手机中,当第一次输入英文的时候,按键盘的del键时,虽然可以删除英文,并不会回调下面的方法。而输入数字的时候却可以回调。在魅族手机测试可以正常回调。于是就知道是兼容问题了。
setDelKeyEventListener(new OnDelKeyEventListener() { @Override public boolean onDeleteClick() { return delete(); } });
解决方法如下:
private OnDelKeyEventListener delKeyEventListener; @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection inputConnection = super.onCreateInputConnection(outAttrs); if (inputConnection == null){ return null; } return new MyInputConnection(inputConnection, true); } private class MyInputConnection extends InputConnectionWrapper { public MyInputConnection(InputConnection target, boolean mutable) { super(target, mutable); } @Override public boolean sendKeyEvent(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_DEL) { if (delKeyEventListener != null && delKeyEventListener.onDeleteClick()) { //onDeleteClick返回true表示已经处理del事件 return true; } } //这里是我项目需要屏蔽了空格和换行按键事件 if (event.getAction() == KeyEvent.ACTION_DOWN && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER||event.getKeyCode() == KeyEvent.KEYCODE_SPACE || event.getKeyCode() == KeyEvent.KEYCODE_TAB || event.getKeyCode() == KeyEvent.KEYCODE_ESCAPE )) { return true; } return super.sendKeyEvent(event); } @Override public boolean deleteSurroundingText(int beforeLength, int afterLength) { if (beforeLength == 1 && afterLength == 0) { return sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)) && sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL)); } return super.deleteSurroundingText(beforeLength, afterLength); }
二、滑动事件冲突问题
在小米手机中经常会出现其他手机没有,而在小米手机中会出现的滑动冲突问题,导致内部的控件无法滑动。如在viewpager中,有个播放音频的控件,由于播放音频的进度条是可以左右滑动的,viewpager也是可以左右滑动的。这时候就会出现进度条滑动不了的问题(只可以点击)。解决方法也很简单,就是重写该控件,加上以下代码,通过内部拦截的方法,让子控件自己处理滑动事件:@Override public boolean dispatchTouchEvent(MotionEvent ev) { getParent().requestDisallowInterceptTouchEvent(true);//这句话的作用 告诉父view,我的事件我自行处理,不要阻碍我 return super.dispatchTouchEvent(ev); }
三、在android studio2.3中无法直接在小米手机上运行程序
自从Android Studio升级到2.3之后,无法直接在小米手机上运行程序,出现错误“Installation failed with message Failed to establish session”有两种解决办法:
1.关闭android Studio的Instant Run功能
(1)在Android Studio按以下路径寻找:File ->Settings -> Build,Execution,Deployment->Instant Run
(2)将Enable Instant Run to hot swap code/resource changes on deploy(default enabled)的选择框取消。
2.在手机的开发者模式中关闭MIUI优化
进入设置->更多设置->开发者选项->启用MIUI优化,点击关闭MIUI优化,关闭并重启手机即可。
四、关闭miui优化后问题
关闭miui优化后会发现所有应用都无法访问手机存储了,如果应用加了权限判断和申请的还好,没有处理的应用可能就会崩溃了。代码没判断的话可以先在安全中心中将访问存储的那个询问改成允许就可以了。待续…
相关文章推荐
- 【Android应用开发技术:用户界面】界面设计中易混淆的概念汇总
- 【Android开发高级实践】轻松帮你发现Bug(FindBugs在AndroidStudio上的应用)
- Android开发之 adb 启动问题或是部署应用不成功,出现“The connection to adb is down, and a severe error has occured.”错误
- <Android应用之路> Android应用开发资源汇总
- Android开发应用汇总
- Android视频方向为什么出现问题以及Android视频应用开发中的处理手段
- 关于Android应用调试在小米手机安装程序时出现Installation failed with message INSTALL_CANCELED_BY_USER问题解决
- Qt for Android开发Android应用时的各种错误汇总(此片博文不成熟,请大家略过)
- Android应用开发中出现appcompat-v7错误
- android开发bug解决方法或者studio使用问题汇总
- Android 开发使用第三方库出现Crash时处理方案汇总
- Eclipse在开发android应用的时候出现存储空间不足而无法安装apk的错误
- Android开发使用小米手机调试出现Installation failed with message Failed to establish session
- Android开发中BUG、错误汇总(不断更新)
- 用eclipse 开发 android应用时出现个错误,“your project contains error(s),please fix them before running your application”
- android 开发 程序中下载安装APK文件 问题汇总 解析程序包时出现问题
- Android - Android Studio 使用小米手机,调试应用出现 Application Installation Failed
- 红米手机调试android应用出现问题汇总
- Android应用开发资源汇总
- android开发常见bug及解决方案汇总