Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通信蓝牙权限交互中是否有AudioManager.MODE\u?_Android - Fatal编程技术网

Android 通信蓝牙权限交互中是否有AudioManager.MODE\u?

Android 通信蓝牙权限交互中是否有AudioManager.MODE\u?,android,Android,我有一行非常简单的代码: audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); 然而,最近在4.0+设备上,我看到一个崩溃,因为这条线路说它需要蓝牙许可 更准确地说,我看到的错误是: java.lang.SecurityException: Need BLUETOOTH permission 在我的设置模式行 我有修改音频设置的权限,但是我看不出这与蓝牙是如何相互作用的,所以我想从逻辑角度确认我是否真的需要蓝牙权限进行模式通信,A

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

audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
然而,最近在4.0+设备上,我看到一个崩溃,因为这条线路说它需要蓝牙许可

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

java.lang.SecurityException: Need BLUETOOTH permission
在我的设置模式行


我有修改音频设置的权限,但是我看不出这与蓝牙是如何相互作用的,所以我想从逻辑角度确认我是否真的需要蓝牙权限进行模式通信,
AudioManager
不可能使用蓝牙,因此需要
android.permission.Bluetooth

从源代码的角度来看,
setMode()
只需要
android.permission。修改音频设置


是的,我认为问题来自OEM/Android的特殊版本。我暂时插上了一针。你完美地回答了我的问题,谢谢。
public void setMode(int mode) {
    IAudioService service = getService();
    try {
        service.setMode(mode, mICallBack);
    } catch (RemoteException e) {
        Log.e(TAG, "Dead object in setMode", e);
    }
}
public void setMode(int mode, IBinder cb) {
    if (!checkAudioSettingsPermission("setMode()")) {
        return;
    }
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;
}