webview 嵌套vue项目  采用高德地图地理位置权限获取onGeolocationPermissionsShowPrompt方法不回调

最近嵌套vue项目时,vue里面接的高德地图,用户运动时需要获取本地的位置权限,但是总是获取不到,vue自然也不会有定位信息,我是这样解决的:

        String dir = getActivity().getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
        webSettings.setGeolocationEnabled(true);
        webSettings.setGeolocationDatabasePath(dir);

开启后 mWebView.setWebChromeClient();再setWebChromeClient的入参的类中重写

@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
    Log.e("", "获取地理权限");
    callback.invoke(origin, true, false);
    super.onGeolocationPermissionsShowPrompt(origin, callback);

    ActivityCompat.requestPermissions(getActivity(), new String[]{
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION
    }, 100);

}

这样的话基本就差不多了,但是发现还是走不到这个方法,于是网络各种查阅资料,查了整整一个晚上,终于在一个博客上看到,如果是androidstudio的话,高德规定需要把targetSdkVersion置为得23,我改完之后,发现果然是这样。在onGeolocationPermissionsShowPrompt方法里拿到了回调信息,功夫不负有心人啊,特此一记,谨记在心!

Logo

前往低代码交流专区

更多推荐