'Permiso denegado' al conectarse al socket unix abstracto
Sistema operativo: Android L
Servidor: un servidor de sistema de nivel nativo, servicio a través de socket abstracto.
Cliente: jni en normal 3º APK
Obtenga un 'permiso denegado' mientras usa APK para conectar el socket.
¡Creo que el socket abstracto no tiene permisos !
Y, el mismo código funciona cuando se ejecuta en un shell de adb, shell con raíces.
- Reenvío de puertos Android
- Tiempo de espera de conexión de socket Android
- ¿Cómo puedo mantener mi aplicación en segundo plano?
- Cuál es la mejor aproximación para enviar grandes paquetes UDP en secuencia
- InputStream no recibe EOF
La pregunta es: ¿ dónde está la permision ?
el código:
char *target_socket_name = "@mobilelogd"; int sock_id = 0; struct sockaddr_un sun; int address_len; sock_id = socket(AF_UNIX, SOCK_STREAM, 0); if (sock_id < 0) { LOG("in %s: Unable to create socket: %s\n", __func__, strerror(errno)); return -1; } else { LOG("socket created!\n"); } memset(&sun, 0, sizeof(sun)); sun.sun_family = AF_UNIX; strncpy(sun.sun_path, target_socket_name, strlen(target_socket_name)); sun.sun_path[0] = 0; address_len = offsetof(struct sockaddr_un, sun_path) + strlen(target_socket_name); if (connect(sock_id, (struct sockaddr *)&sun, address_len) == -1) { LOG("in %s: Connect to socket failed: (%d),%s\n", __func__, errno, strerror(errno)); close(sock_id); return -1; }
— EDIT 1 — : agregar un código de inicialización, y cambiar '0' a 0. El mismo resultado.
- Comunicación entre dos aplicaciones usando emulador como servidor y cliente
- Mensajes de error NetlinkListener y NetlinkEvent
- ¿Cómo puedo cerrar BluetoothSocket en la rotación de la pantalla en Android?
- Cómo resolver java.net.BindException: error de enlace: EADDRINUSE (Dirección ya en uso)
- La mejor manera de implementar Socket.io en android
- Conexiones de socket y Polling. ¿Cuál es la mejor solución en términos de duración de la batería?
- El arranque del emulador atascó la estructura x86 en AOSP 4.3 con el emulador: Error al conectar con el zócalo '127.0.0.1:1970'
- Android: ¿Cómo detectar la aplicación eliminada de la lista de aplicaciones recientes?
Bueno, aquí está la cuchara que cambió en L por un error introducido .. la corrección de errores es la tubería:
https://android.googlesource.com/device/moto/shamu/+/b2db40f
Hasta que las pipas de java o las pipas nativas en lugar de otro
Puesto que Android manipuló el kernel de Linux y agregó la red Paranoid a él, así que usted debe agregar el permiso siguiente a su archivo del manifiesto.
<uses-permission android:name="android.permission.INTERNET" />
Android agrega una opción de "red paranoide" al kernel de Linux, que restringe el acceso a algunas funciones de red dependiendo del grupo del proceso de llamada.
Por lo tanto, el uid
tu aplicación (identificador de usuario, a cada aplicación se le asigna un uid
único una vez que se instala) se debe otorgar ese permiso para realizar tareas de red.
- Exoplayer vs Vitamio
- Biblioteca, que es depdendency de otra biblioteca, no reconocido en cordova ejecutar android