我正在开发一个应用程序,允许用户使用 google vision api 连接到特定的 wifi 网络以扫描包含 ssid 的 QR 码。要扫描 wifi 网络,我需要请求用户授予位置权限。如果我转到设置并手动启用位置权限,这一切都很好,但是在运行时请求权限时,用户点击启用然后弹出第二个对话框,Screen Overlay Detected
这需要上下文切换来启用Screen Overlay
权限。我没有在其他应用程序上绘图,当我手动启用位置权限时没有问题。那么为什么会弹出这个权限对话框呢?
由于我不确定 Android 为什么要求此权限,因此我不确定要发布什么代码。我已包含更改网络请求的 3 个所需权限的请求。
final int permissionCheck = ContextCompat.checkSelfPermission(mActivity, Manifest.permission.CAMERA);
final int locationPermissionCheck = ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_COARSE_LOCATION);
final int wifiPermissionCheck = ContextCompat.checkSelfPermission(mActivity, Manifest.permission.CHANGE_WIFI_STATE);
final int granted = PackageManager.PERMISSION_GRANTED;
if ((permissionCheck != granted) || (locationPermissionCheck != granted) || (wifiPermissionCheck != granted)) {
ActivityCompat.requestPermissions(mActivity, new String[]{
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.CHANGE_WIFI_STATE
}, 0);
} else {
cameraSource.start(cameraView.getHolder());
}
更新
事实证明,它不仅仅是位置许可。任何权限请求都经历相同的行为。