android - 调用 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)
解决方案
在清单文件中添加蓝牙权限。
推荐阅读
- javascript - json-rules-engine 处理对象数组
- go - 在 Visual Studio 代码中调试 cgo 会产生“多重定义”错误
- python - 绘制 n 次函数的图形
- java - Kafka Consumer - 从每个分区读取 2000 条 LATEST 消息
- c++ - 为什么将一个指针分配给另一个指针会改变 cpp 中的原始指针?
- swift - 从 anyObject 到坐标数组
- office-js - Outlook 加载项可操作消息“Action.InvokeAddInCommand”在 OWA 中没有模式
- amazon-web-services - EMR 集群卡在调整大小上
- ansible - 如何通过索引生成器结果中的列表来选择 1 项?
- mlt - MLT XML:为输入数据指定编解码器