首页 > 解决方案 > 调用 AudioManager.setMode(MODE_NORMAL) 时如何修复具有 Android 8.0 和 8.1.0 特定 SecurityException 的三星?

问题描述

我正在开发一个使用 AudioManager 更改音频状态的应用程序。当应用程序处于后台时,将模式更改回正常时应用程序崩溃。

这是设备特定的问题。它仅在应用程序处于后台时发生在装有 Android 8.0 或 Android 8.1.0 的三星设备上。

我尝试在应用程序为后台使用特定三星设备的蓝牙耳机时更改 AudioManager 的模式。以三星 Galaxy s8+ 为例。我无法重现这一点,但有很多 Crashlytics 报告的崩溃。

这就是导致崩溃的原因:

mAudioManager.setMode(AudioManager.MODE_NORMAL);

这就是崩溃:

Need BLUETOOTH permission: Neither user 10240 nor current process has android.permission.BLUETOOTH.
    android.os.Parcel.readException (Parcel.java:1967)
    android.os.Parcel.readException (Parcel.java:1913)
    android.media.IAudioService$Stub$Proxy.setMode (IAudioService.java:1683)
    android.media.AudioManager.setMode (AudioManager.java:2142)

标签: androidaudiobluetoothpermissionssamsung-mobile

解决方案


在清单文件中添加蓝牙权限。


推荐阅读