是否有一个AudioManager.MODE_IN_COMMUNICATION蓝牙权限互动? [英] Is there a AudioManager.MODE_IN_COMMUNICATION Bluetooth permission interaction?

查看:1674
本文介绍了是否有一个AudioManager.MODE_IN_COMMUNICATION蓝牙权限互动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个非常简单的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屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆