studio requestpermissions permission permisos internet android android-service

android - permisos - requestpermissions



El servicio exportado no requiere permiso: ¿qué significa? (3)

Como dijo Jens , "significa que otras aplicaciones (arbitrarias) que el usuario tiene en su teléfono pueden vincularse a su Servicio y llamar a cualquier método que esté expuesto a través de su interfaz AIDL".

Creé un servicio que está vinculado por otras aplicaciones a través de AIDL, y lo agregué al manifiesto de la siguiente manera:

<service android:name=".MyService"> <intent-filter> <action android:name="org.example.android.myservicedemo.IService" /> </intent-filter> </service>

donde IService es la interfaz AIDL.

De esta forma, Eclipse me muestra la advertencia El servicio exportado no requiere permiso . Si elimino el intent-filter , la advertencia desaparecerá, pero obviamente las aplicaciones no pueden enlazarse al servicio.

¿Qué significa esta advertencia?


Si desea restringir el uso de su actividad a su propia aplicación, debe agregar exported=false a la declaración de manifiesto de su actividad.

Si desea permitir que otras aplicaciones lo utilicen (explícitamente a través de su nombre de clase o, mejor, mediante un intento con un tipo de datos o acción), entonces tiene dos opciones:

  • restrinja esas aplicaciones usando un permiso
  • permite que todas las aplicaciones lo utilicen, luego puede agregar tools:ignore="ExportedActivity" a la declaración de manifiesto de su actividad.

-

El mismo razonamiento se aplica a un servicio, con tools:ignore="ExportedService" y proveedores de contenido con tools:ignore="ExportedContentProvider" .


Tuve el mismo problema cuando actualicé SDK a la versión 20 . Lo eliminé agregando android: propiedad exportada android:exported="false" como tal:

<service android:name=".MyService" android:exported="false"> <intent-filter> <action android:name="org.example.android.myservicedemo.IService" /> </intent-filter> </service>

Ver este doc