0

我正在开发一个应用程序,允许用户使用 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());
}

更新

事实证明,它不仅仅是位置许可。任何权限请求都经历相同的行为。

4

1 回答 1

0

可能是您正在使用的某些库需要屏幕覆盖权限。你能检查一下你在你的库中使用的库以及它们需要的权限吗?

于 2016-08-22T12:27:43.007 回答