Si llamo a la función socket()
en métodos JNI C, la aplicación aún fallará con un error de permiso. Y si pongo una línea de permisos de uso en AndroidManifest.xml, el problema está solucionado.¿Cómo se aplica el permiso de Android?
Parece que la comprobación de permiso de Android no está implementada en la máquina virtual Dalvik porque estoy llamando a una función C nativa y todavía se comprueba. Me gustaría saber cómo se realiza la verificación, en el kernel de Android, o la aplicación se rastrea con algo como ptrace
para interceptar todas las llamadas al sistema, o de cualquier otra manera. Muchas gracias.
Técnicamente, esto solo se aplica a los sockets de dominio de Internet. Los sockets de dominio de Unix, que utilizan la misma llamada de socket() con una constante diferente, no tienen aplicación de ID de grupo a través de la modificación del núcleo de "red paranoica" de Android. –