我正在使用带有蓝牙LE设备的androidthings SDK的预览版本3。
为了启用蓝牙,我必须拨打以下电话,以绕过请求用户的许可:
mBluetoothAdapter.enable()
然而,我在扫描时遇到了一个SecurityException:
java.lang.SecurityException:需要ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限才能获得扫描结果
使用Vysor,我通过请求权限并接受以下请求的权限来解决这个问题:
requestPermissions(new String[] {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSIONS_CODE);
有没有办法接受许可而不需要使用屏幕?
答案 0 :(得分:4)
根据Android事物platform overview docs:
不支持在运行时请求权限,因为不保证嵌入式设备具有接受运行时对话框的UI。在应用程序的清单文件中声明您需要的权限。在应用程序的清单中声明的所有正常和危险权限都将在安装时授予。
您看到SecurityException
的原因是release notes上列出了以下已知问题:
在下次重启设备之前,不会授予应用程序请求的危险权限。
安装应用程序后重新启动设备将在您的应用清单中授予新权限。在开发过程中可以使用的另一种方法是使用-g
标志直接在ADB上安装:
$ adb install -g <APK File>
这将在安装时授予危险权限。