StartBluetoothSco () lanza la excepción de seguridad (BROADCAST_STICKY) en ICS

Tengo un stacktrace enviado por un usuario con ICS.

En mi dispositivo Froyo todo está funcionando bien, pero al parecer el usuario obtiene la denegación de permiso cuando AudioManager.startBluetoothSco() se llama … No tengo ni idea de por qué sucede esto – Sé que la difusión de ACTION_SCO_AUDIO_STATE_CHANGED es pegajosa , pero no es La aplicación que la está enviando, por lo que no debería necesitar el permiso …

A continuación se muestra el stacktrace:

 java.lang.SecurityException: Permission Denial: broadcastIntent() requesting a sticky broadcast from pid=15341, uid=10064 requires android.permission.BROADCAST_STICKY at android.os.Parcel.readException(Parcel.java:1327) at android.os.Parcel.readException(Parcel.java:1281) at android.media.IAudioService$Stub$Proxy.startBluetoothSco(IAudioService.java:1090) at android.media.AudioManager.startBluetoothSco(AudioManager.java:975) at de.bulling.smstalk.libs.utils.AudioUtils.startBluetoothSco(AudioUtils.java:164) at de.bulling.smstalk.Services.TTS.speakIt(TTS.java:151) at de.bulling.smstalk.Services.TTS.onInit(TTS.java:83) at android.speech.tts.TextToSpeech.dispatchOnInit(TextToSpeech.java:627) at android.speech.tts.TextToSpeech.access$1000(TextToSpeech.java:52) at android.speech.tts.TextToSpeech$Connection.onServiceConnected(TextToSpeech.java:1279) at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1068) at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1085) at android.os.Handler.handleCallback(Handler.java:605) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method) 

/ Edit: Podría reproducir el problema, y ​​no importa si inicio el servicio con START_STICKY o no.

La única solución es agregar este permiso a su aplicación para que funcione en ICS.

 <uses-permission android:name="android.permission.BROADCAST_STICKY"/> 

Hay un problema registrado aquí en OHAP para este defecto en ICS

  • Permisos de archivo en Android
  • ¿Cómo puedo obtener permisos de root a través del SDK de Android?
  • ¿Cómo obtener el icono de un permiso de Android?
  • Android: Herramientas del sistema: Alertas de nivel del sistema de visualización: ¿Cómo utilizar este permiso?
  • Facebook, setReadPermissions y setPublishPermissions
  • ¿Cómo se puede comprobar el permiso en tiempo de ejecución sin lanzar SecurityException?
  • Uso de libusb en Android sin enraizamiento
  • ¿Hay alguna herramienta para proteger una aplicación de malware aún más que los permisos otorgados en Android?
  • Permiso para leer datos de la tarjeta SD
  • Android permission.INTERACT_ACROSS_USERS_FULL
  • Permisos del sistema Android a través de la raíz
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.