天天看點

關于WebView中無法定位的問題 關于WebView中無法定位的問題 之前碰到個問題,使用webview的時候無法定位,發現有人說要這麼做

關于WebView中無法定位的問題

之前碰到個問題,使用webview的時候無法定位,發現有人說要這麼做

WebSettings settings = wbContent.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setGeolocationEnabled(true);
        settings.setDomStorageEnabled(true);

        settings.setDatabaseEnabled(true);
        String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
        settings.setGeolocationDatabasePath(dir);
        webChromeClient = new WebChromeClient(){
            @Override
            public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
                callback.invoke(origin, true, true);
                super.onGeolocationPermissionsShowPrompt(origin, callback);
            }
        };
        wbContent.setWebChromeClient(webChromeClient);
        wbContent.loadUrl("https://xxxxxxxxxxxxxxxxxxxxxxxx");
                

網上很多地方說加了這段代碼之後就可以正常定位了,然而我加上之後還是沒有什麼卵用。沒辦法,百度就是沒谷歌給力。

看了下日志,說我沒有擷取到權限,但是代碼中的callback.invoke(origin, true, true);是擷取定位權限的操作啊。

我想了想,突然想到了6.0之後要動态申請權限。

我這樣加入動态申請權限的代碼

if (Build.VERSION.SDK_INT >= ) {
            int checkPermission = ContextCompat.checkSelfPermission(LocationTestActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION);
            if (checkPermission != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(LocationTestActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, );
                ActivityCompat.requestPermissions(LocationTestActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, );
            }else {
                wbContent.loadUrl("https://xxxxxxxxxxxxxxxxxxxxxxxx");
            }
        }
                

發現這樣就能正常的擷取到定位的結果,有的人可能不知道要在哪裡動态申請,其實這要看你具體的流程,你也可以在跳轉到這個頁面的時候申請,也可以在展示網頁的時候申請。

最後說一下,onGeolocationPermissionsShowPrompt這個方法隻會調用一次,和動态申請權限一樣,隻會在第一次調用。

原文出處 : https://www.jianshu.com/p/9ae4f4c36ed5

繼續閱讀