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预览照片时按键盘左右键,底部功能栏的焦点也同时变动

Android 系统APK-计算器 修复按一次Backspace键会删掉两个字符

Android 11.0 在闹钟APK,移除时钟音量按钮

Android 11.0 删除系统APK