我已经尝试并搜索了几天,但无法为我的问题找到任何解决方案:
我正在尝试在/ system / usr / keylayout中安装.kl文件来重新映射我的应用程序的一些键盘键。我有正确格式的正确.kl文件:Vender_XXXX_Product_XXXX.kl,如果我使用root explorer复制它,它就可以工作。
但我想通过安装我的应用程序来安装(没有root)。这意味着它必须包含在.apk文件中并在安装过程中复制!?
到目前为止,我的方法是使用接收器和QUERY_KEYBOARD_LAYOUTS意图。 为此,需要.kcm文件。这不适用于我的手机(Galaxy S3)。我不知道为什么,但它没有在设置中显示PHYSICAL_KEYBOARD设置项:(
无论如何,我认为/希望更好的方法是NDK: 我尝试使用ndk,并能够将一些本机c集成到我的应用程序中,但没有像我的.kl文件那样的“源”文件。 我希望device.mk文件能以某种方式将我的.kl文件复制到/ system,如下所示: device.mk PRODUCT_COPY_FILES + = $(LOCAL_PATH)/Vendor_XXXX_Product_XXXX.kl:system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
那可能吗?在安装实际的apk时使用NDK自动将文件“安装”到/ system? 如果是这样,你怎么做?我对整个makefile的东西和NDK感到困惑。从来没有使用过,我对c很不好。
如果你们中的任何一个人知道如何做我要问的事情......请告诉我。非常感谢!
答案 0 :(得分:3)
使用apk包安装.kcm文件并非不可能。事实上,这就是布局应用程序的功能。您使用QUERY_KEYBOARD_LAYOUT走在正确的轨道上。
我想安装.kl文件,就像你一样,但我找不到任何好的信息。所以我只是在我的.kcm文件中使用了map关键字,它具有完全相同的效果。
在这里查看我的来源,我允许用户在不支持手机的情况下添加se_sv_dvorak布局kcm:https://github.com/innsmouthrain/se_sv_dvorak
答案 1 :(得分:1)
但我想通过安装我的应用程序来安装(没有root)。
这是不可能的。应用程序没有/system/usr/
的写入权限,除非它们以root用户身份运行。
在安装实际的apk时使用NDK自动“安装”文件到/ system?
这是不可能的:
安装
使用NDK编写的代码不会获得任何其他操作系统权限,因此这些代码无法写入/system/usr/
,除非以root身份运行