【问题标题】:Where to put code for a global hardware key listener?将全局硬件密钥侦听器的代码放在哪里?
【发布时间】:2013-08-07 01:26:24
【问题描述】:

我正在尝试将硬件密钥支持破解到现有应用中,但我意识到我对 Android 应用开发知之甚少,无法继续。
我可以使用 APKtool 毫无问题地反编译和重新编译应用程序,并且我自己制作了一个带有硬件密钥支持的小应用程序来提取已编译的 smali 代码。作为参考,该部分如下所示:

.method public onKeyDown(ILandroid/view/KeyEvent;)Z

如果我想让应用“全局”监听硬件键(即在每个活动、窗口、你有什么、应用),我应该把 onKeyDown 代码放在哪里?我是把它放在一个活动中(如果是的话,是哪一个),放在所有活动中,还是一起放在其他地方?

编辑:我意识到“全局”在这里有点模棱两可。我的意思是整个应用程序,而不是系统范围。

【问题讨论】:

  • 我们自己的 balpha 最近发布了一些关于 Android 监听器的好信息,滚动到事件传播:balpha.de/2013/07/…
  • 这当然是有用的信息,尽管我没有足够的信心假设关键事件以与触摸事件相同的方式传播。

标签: android onkeydown smali


【解决方案1】:

如果我想让应用“全局”监听硬件键(即在应用的每个活动、窗口、你有什么)中,我应该将 onKeyDown 代码放在哪里?

您下载 Android 源代码,将其修改为具有某种全局硬件密钥处理程序,编译修改后的源代码,将其打包成 ROM 模块,然后在您的设备上安装 ROM 模块。

否则,只有前台活动(或者,有时是窗口)会接收关键事件。

【讨论】:

  • 哦,不过没关系!我希望它“在全球范围内用于应用程序”,而有问题的应用程序是一个不在后台运行的应用程序。
  • @Protectorone:没有“为应用程序全局”处理硬件密钥的概念。因此,您要么修改 Android,要么在每个活动(或每个窗口)的基础上注册处理程序。
  • 没有可以拦截整个应用程序中的密钥的“主活动”吗?我真的必须把它放在每个活动和窗口中吗?
  • @Protectorone:“没有可以在整个应用程序中拦截密钥的“主活动”吗?” - 正确的。 “我真的必须把它放在每个活动和窗口中吗?” - 正确的。现在,如果您是应用程序的实际作者,您可能会使用继承或辅助方法或其他方法来最大程度地减少冗余代码的数量。
  • 嗯,这很有趣!谁说这个应用程序的创建者还没有?如果其中的所有活动都继承自主活动/窗口,那么将代码放在那里就足够了吗?
猜你喜欢
  • 1970-01-01
  • 2013-06-02
  • 2012-11-14
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2016-01-21
  • 1970-01-01
相关资源
最近更新 更多