gpt4 book ai didi

android - 有没有AudioManager.MODE_IN_COMMUNICATION蓝牙权限交互?

转载 作者:太空狗 更新时间:2023-10-29 16:38:54 25 4
gpt4 key购买 nike

我有一行非常简单的代码:

audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);

但是,最近在 4.0+ 设备上,由于这条线说它需要蓝牙许可,我看到了崩溃。

更准确地说,我看到的错误是:

java.lang.SecurityException: Need BLUETOOTH permission

在我的 setMode 行。

我有 MODIFY_AUDIO_SETTINGS 权限,但是我看不到它如何与蓝牙交互,所以我正在寻找确认我是否真的需要 MODE_IN_COMMUNICATION 的 BLUETOOTH 权限

最佳答案

从逻辑的角度来看,AudioManager 不可能使用蓝牙,因此需要 android.permission.BLUETOOTH

从源代码的角度来看,setMode()只需要android.permission.MODIFY_AUDIO_SETTINGS:

  • AudioManager:1425

    public void setMode(int mode) {
    IAudioService service = getService();
    try {
    service.setMode(mode, mICallBack);
    } catch (RemoteException e) {
    Log.e(TAG, "Dead object in setMode", e);
    }
    }
  • AudioService:703

    public void setMode(int mode, IBinder cb) {
    if (!checkAudioSettingsPermission("setMode()")) {
    return;
    }
  • AudioService:1250

    boolean checkAudioSettingsPermission(String method) {
    if (mContext.checkCallingOrSelfPermission("android.permission.MODIFY_AUDIO_SETTINGS")
    == PackageManager.PERMISSION_GRANTED) {
    return true;
    }
    String msg = "Audio Settings Permission Denial: " + method + " from pid="
    + Binder.getCallingPid()
    + ", uid=" + Binder.getCallingUid();
    Log.w(TAG, msg);
    return false;
    }

关于android - 有没有AudioManager.MODE_IN_COMMUNICATION蓝牙权限交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21417127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com