2013-12-05 1 views
1

я попытался и искали в течение нескольких дней и не смог придумать любое решение для моей проблемы:Установка keylayout файла (.kl) с андроид приложение (.apk)

Я пытаюсь установить .kl файл в/system/usr/keylayout, чтобы переназначить некоторые клавиши клавиатуры для моего приложения. У меня есть правильный .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 в/такую ​​как: device.mk PRODUCT_COPY_FILES + = $ (local_path) /Vendor_XXXX_Product_XXXX.kl:system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl

Это вообще возможно? чтобы использовать NDK «установить» файл в/системы автоматически при установке фактического ар к? И если да, то как вы это делаете? Я запутался в целом о файле makefile и NDK. Никогда не используйте это раньше, и я плохо себя чувствую с помощью c.

Если кто-либо из вас, ребята, знает, как делать то, что я прошу ... пожалуйста, дайте мне знать. Было бы очень благодарно!

+0

Почему вы пытаетесь установить файл keylayout? Они определяют поведение для клавиатурного оборудования и объединяются людьми, которые пишут драйверы устройств. Схема именования связана с регистрацией драйвера. Что именно вы пытаетесь достичь? – Dave

ответ

1

Но я хочу, чтобы он был установлен (без корня), установив мое приложение.

Это невозможно. Приложения не имеют права на запись в /system/usr/, если только они не работают от имени пользователя root.

Чтобы использовать NDK для «установки» файла в систему автоматически при установке фактического apk?

Вдвойне невозможно:

  • Ваше приложение не получает контроль при установке

  • код, написанный с использованием NDK не получает никаких дополнительных прав ОС, и поэтому такой код не может написать до /system/usr/, за исключением случаев, когда бежит как корень

+0

Кулак: Большое вам спасибо за быстрый ответ. Вы - насколько я мог понять - правильно. НО: Почему существуют файлы Vendor.kl, чем? Их цель должна быть установлена ​​в/system/usr/keylayout/и писать в виде простого текста, чтобы они были легко созданы. – user3072250

+0

@ user3072250: «Почему эти файлы Vendor.kl существуют, чем?» - Я понятия не имею, извините. – CommonsWare

2

Невозможно установить .kcm с пакетом apk. На самом деле это именно то, как это делают приложения для макетов. Вы находитесь на правильном пути с QUERY_KEYBOARD_LAYOUT.

Я хотел установить файл .kl, как и вы, но я не нашел никакой хорошей информации об этом. Поэтому вместо этого я просто использовал ключевое слово map в моем файле .kcm, он имеет тот же эффект.

Проверьте мой источник здесь, где я позволяет пользователю добавить se_sv_dvorak макет КСМ без укоренения телефон: https://github.com/innsmouthrain/se_sv_dvorak

+0

Привет, innsmouth.rain, сегодня я посмотрю и попробую ваши предложения. Большое спасибо за ваш ответ ... – user3072250

+0

Я стараюсь использовать .kcm вместо .kl, и он работает. Однако я все еще не могу понять, почему .kl не работает. – NTj

Смежные вопросы