Если я вызову функцию socket()
в методах JNI C, приложение все равно выйдет из строя с ошибкой разрешения. А если в AndroidManifest.xml добавить строку Uses-Permission, то проблема устранена.
Таким образом, похоже, что проверка разрешений Android не реализована в виртуальной машине Dalvik, поскольку я вызываю собственную функцию C и все еще проверяюсь. Я хотел бы знать, где выполняется проверка, в ядре Android, или приложение отслеживается чем-то вроде ptrace
для перехвата каждого системного вызова или любым другим способом. Большое спасибо.