是否有一个AudioManager.MODE_IN_COMMUNICATION蓝牙权限互动? [英] Is there a AudioManager.MODE_IN_COMMUNICATION Bluetooth permission interaction?
问题描述
我有一个非常简单的code线:
I have a very simple line of code:
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
不过,近日在4.0以上版本的设备,我看到一个崩溃是由于该行称它需要蓝牙权限。
However, recently on 4.0+ devices, I am seeing a crash due to this line saying it requires the bluetooth permission.
要更precise,我看到的错误说:
To be more precise, the error I'm seeing says:
java.lang.SecurityException: Need BLUETOOTH permission
在我setMode线。
at the line of my setMode.
我有许可权
许可,但是我不认为这是如何与蓝牙互动,所以我找与否我真正需要的蓝牙权限确认对于MODE_IN_COMMUNICATION
I have the MODIFY_AUDIO_SETTINGS
permission, however I do not see how this interacts with bluetooth, so I am looking for a confirmation of whether or not I truly need the BLUETOOTH permission for MODE_IN_COMMUNICATION
推荐答案
从逻辑上来看,是没有办法的 AudioManager
将使用蓝牙,因此需要 android.permission.BLUETOOTH
。
From a logical point of view, there is no way that AudioManager
would use Bluetooth and thus need android.permission.BLUETOOTH
.
从一个源$ C $ C点, setMode()
只需要 android.permission.MODIFY_AUDIO_SETTINGS
From a source code point of view, setMode()
needs only android.permission.MODIFY_AUDIO_SETTINGS
:
-
<一个href=\"https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioManager.java\"相对=nofollow>
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);
}
}
<一个href=\"http://grep$c$c.com/file/repository.grep$c$c.com/java/ext/com.google.android/android/2.2_r1.1/android/media/AudioService.java#AudioService.setMode%28int,android.os.IBinder%29\"相对=nofollow> AudioService:703
public void setMode(int mode, IBinder cb) {
if (!checkAudioSettingsPermission("setMode()")) {
return;
}
<一个href=\"http://grep$c$c.com/file/repository.grep$c$c.com/java/ext/com.google.android/android/2.2_r1.1/android/media/AudioService.java#AudioService.checkAudioSettingsPermission%28java.lang.String%29\"相对=nofollow> 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;
}
这篇关于是否有一个AudioManager.MODE_IN_COMMUNICATION蓝牙权限互动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!