美文网首页
记一次查看KeyEvent.keyCodeToString方法源

记一次查看KeyEvent.keyCodeToString方法源

作者: 军如令 | 来源:发表于2019-02-01 11:38 被阅读0次

    今天在修改app的时候发现调用KeyEvent.keyCodeToString()返回结果和Google的标准不同,开始以为自己程序有问题,结果在我自己的设备上跑一次却发现返回结果符合标准。所以决定看看对应版本的源码到底发生了什么。

    进入keyCodeToString()

    发现它调用了native方法,

    找它native的实现,因为KeyEvent的全名为

    package android.view;

    所以它方法名为 android.view.keyCodeToString,对应的c文件中的方法名字为android_view_keyCodeToString()

    在/framework/base/core/jni/中可以找到对应的文件名 [包名]_[类名].cpp,即android_view_KeyEvent.cpp,

    更详细可以自行查看https://blog.csdn.net/hp910315/article/details/51733410这篇博客

    发现又调用了KeyEvent::getLabel(keyCode)方法,继续跟进,发现这个文件中没有我们要找的方法,查看它导入其它头文件,经过查找发现它在input/Input.h文件中

    进入Input.h

    发现这个方法又只出现过一次,查看文件首部

    在<input/InputEventLabels.h有它的实现,进入

    终于发现熟悉的身影,查看KEYCODES

    发现居然多添加了一个SHIFT,简直SHIT,之后发现有人改了这一个地方,明明官方特意加了NOTE,都提醒说不能只改这一个地方啊,我哭了

    以后一定注意代码规范,不要给后人挖坑

    相关文章

      网友评论

          本文标题:记一次查看KeyEvent.keyCodeToString方法源

          本文链接:https://www.haomeiwen.com/subject/amnrsqtx.html