Собственные разрешения Android NDK

Как ОС Android обрабатывает разрешения с собственным кодом, работающим в скомпилированном NDK .apk? Мне кажется, что, поскольку JNI просто вызывает собственные функции, фактическая часть NATIVE кода не должна зависеть от разрешений Android. Например, я хочу разработать приложение для Android (.apk), которое записывает файл в data/system. AOS уже монтирует данные/систему как RW, поэтому я уже смог разработать собственную программу, которая легко выполняет запись. Я думаю, что когда я реализую это с помощью NDK, мне не нужно будет устанавливать разрешения на запись в каталог из-за нативной реализации. Верно ли это предположение?

Спасибо, Дэвид


person David    schedule 29.12.2011    source источник
comment
К счастью, нет такого простого способа обходиться с предоставленными пользователями разрешениями. Ваше предположение может относиться к некоторым из них, но не ко всем.   -  person harism    schedule 30.12.2011


Ответы (1)


Я думаю, что когда я реализую это с помощью NDK, мне не нужно будет устанавливать разрешения на запись в каталог из-за нативной реализации. Верно ли это предположение?

Точно нет. Разрешения влияют на все в процессе, независимо от того, какой язык программирования вы выберете для написания.

person CommonsWare    schedule 30.12.2011
comment
Можете ли вы уточнить? Это то, что я знаю, служба диспетчера действий применяет все разрешения Android, когда приложение делает намерение для данного действия. Если вы запускаете собственный код через приложение, как оно может обеспечить соблюдение этих разрешений? Мне кажется, что поскольку объекты намерения существуют только на уровне реализации Java, нативный код обойдет весь этот процесс. Я также думал, что на нативном уровне только принудительные разрешения выполняются ядром, что предотвращает доступ определенных UID и GID к определенному оборудованию... - person David; 30.12.2011
comment
@David: служба диспетчера действий применяет все разрешения Android, когда приложение делает намерение для данного действия - нет. Разрешения не имеют ничего общего с Intents. как он может обеспечить соблюдение этих разрешений? -- потому что разрешения применяются там, где они необходимы. Я также думал, что на нативном уровне только принудительные разрешения выполняются ядром, что предотвращает доступ определенных UID и GID к определенному оборудованию - хотя это может быть сделано, существует множество проверок разрешений на уровне ядра (например, INTERNET) . - person CommonsWare; 30.12.2011
comment
Из дальнейшего чтения на developer.android.com говорится, что объект Intent передается в Context.startActivity() или Activity.startActivityForResult(), чтобы запустить действие или заставить существующее действие сделать что-то новое. После изучения ActivityManagerService.java, после того как AMS получает намерение начать действие, она вызывает PackageManageService, чтобы проверить, находится ли соответствующее разрешение намерения в packages.xml. Мы видим, что когда приложение вызывает этот нативный код, никакая активность не запускается, так что можете ли вы уточнить, как эти разрешения применяются? - person David; 30.12.2011
comment
@David: groups.google. com/group/android-ndk/browse_thread/thread/ - person CommonsWare; 30.12.2011