2011-12-30 24 views
7

Tôi có một stacktrace được gửi bởi người dùng có ICS.startBluetoothSco() ném ngoại lệ bảo mật (BROADCAST_STICKY) trên ICS

Mở tất cả mọi thứ thiết bị Froyo của tôi là làm việc tốt, nhưng người dùng dường như nhận được từ chối Permission khi AudioManager.startBluetoothSco() được gọi là ... Tôi không có ý tưởng tại sao điều này đang xảy ra - Tôi biết các Broadcast cho ACTION_SCO_AUDIO_STATE_CHANGED là dính, nhưng nó không phải là ứng dụng đang gửi nó, vì vậy nó không cần sự cho phép ...

Dưới đây là 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) 

/chỉnh sửa: tôi có thể tạo lại vấn đề này, và nó không nếu tôi bắt đầu dịch vụ với START_STICKY hay không.

+0

Có lý do nào để không muốn để bao gồm sự cho phép? –

+0

Không, bây giờ tôi đã đưa nó vào bản cập nhật tiếp theo, nhưng không cần thiết * đối với chức năng này. Vì vậy, phải có một cái gì đó sai trái. Argh - cho đến nay ICS đã mang lại rất nhiều vấn đề .... – Force

+0

Bạn có thể tái tạo nó trong trình giả lập không? Hay nó chỉ xảy ra trên Galaxy Nexus? Nó có thể là một vấn đề thiết bị cụ thể? –

Trả lời

4

Chỉ workaround là thêm sự cho phép này để ứng dụng của bạn để làm cho nó làm việc trên ICS ..

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

Có một vấn đề đăng nhập here on OHAP cho khiếm khuyết này trong ICS

Các vấn đề liên quan