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。修改音频设置
:
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;
}