Android 11.0 修复在计算器APK(Calculator),按一次Backspace键会删掉两个字符
Posted 王睿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 11.0 修复在计算器APK(Calculator),按一次Backspace键会删掉两个字符相关的知识,希望对你有一定的参考价值。
理想效果:按一次Backspace键删掉一个字符
packages/apps/ExactCalculator/src/com/android/calculator2/Calculator.java
思路:先将 计算器APK内 Backspace键的删除效果删掉
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
switch (keyCode)
case KeyEvent.KEYCODE_NUMPAD_ENTER:
case KeyEvent.KEYCODE_ENTER:
case KeyEvent.KEYCODE_DPAD_CENTER:
mCurrentButton = mEqualButton;
onEquals();
return true;
case KeyEvent.KEYCODE_DEL:
mCurrentButton = mDeleteButton;
++ //onDelete();
return true;
case KeyEvent.KEYCODE_CLEAR:
mCurrentButton = mClearButton;
onClear();
return true;
default:
cancelIfEvaluating(false);
frameworks/base/core/java/android/app/Activity.java
public boolean onKeyDown(int keyCode, KeyEvent event)
++ android.app.ActivityManager am = (android.app.ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);
++ android.content.ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
++ // 阻止计算器界面上的 BackSpace 键
++ if (keyCode==KeyEvent.KEYCODE_DEL && "xxx.Calculator".equals(cn.getClassName()))
++ // 14.0 英寸、15.6 英寸设备 x、y 相同
++ int x=960,y=208;
++ // 11.6寸设备x,y需要区别对待
++ if ("1".equals(SystemProperties.get("persist.sys.scakeypad")))
++ x = 684;
++ y = 192;
++
++ // 模拟触摸 DEL 事件
++ MotionEvent downMotion = MotionEvent.obtain(android.os.SystemClock.uptimeMillis(),android.os.SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,x,y,0);
++ MotionEvent upMotion = MotionEvent.obtain(android.os.SystemClock.uptimeMillis(),android.os.SystemClock.uptimeMillis(),MotionEvent.ACTION_UP,x,y,0);
++ dispatchTouchEvent(downMotion);
++ dispatchTouchEvent(upMotion);
++ return true;
++ //end
我是王睿丶,加入我的Q群:901440630,欢迎一起讨论安卓技术!
以上是关于Android 11.0 修复在计算器APK(Calculator),按一次Backspace键会删掉两个字符的主要内容,如果未能解决你的问题,请参考以下文章
Android 11.0 修复在录音机APK(SoundRecorder),录音时不受外部USB插拔影响
Android 11.0 修复Settings→wifi→添加网络→扫描二维码界面上下压缩
Android 11.0 修复Camera预览照片时按键盘左右键,底部功能栏的焦点也同时变动