繁体   English   中英

android webview当前位置不适用于kitkat版本

[英]android webview current location is not working for kitkat version

我在我的应用程序中使用webview。 这样我就无法获得当前位置。

我在清单中授予了权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

在我的活动类的onCreate方法中

webView = (WebView) findViewById(R.id.webview);
    WebSettings settings = webView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setGeolocationEnabled(true);

webView.setWebChromeClient(new PQChromeClient());

并在我的PQChromeClient()方法中

 @Override
    public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) {
        super.onGeolocationPermissionsShowPrompt(origin, callback);

        //TODO: temporary commented
        requestPermission();
        turnGPSOn();
        callback.invoke(origin, true, false);
    }


   private void requestPermission(){

    if (ActivityCompat.shouldShowRequestPermissionRationale(MySocialNetworkActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)){

        Toast.makeText(MySocialNetworkActivity.this,"GPS permission allows us to access location data. Please allow in App Settings for additional functionality.",Toast.LENGTH_LONG).show();

    } else {

        ActivityCompat.requestPermissions(MySocialNetworkActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},PERMISSION_REQUEST_CODE);
    }
}

private void turnGPSOn(){
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

    if(!provider.contains("gps")){
        //if gps is disabled
        final Intent poke = new Intent();
        poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
        poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
        poke.setData(Uri.parse("3"));
        sendBroadcast(poke);
    }
}

该代码适用于棒棒糖和棉花糖,但不适用于奇巧。 最近,我将Android Studio从2.15更新到了2.2。 此更新会造成任何问题吗?

它应该受支持,因为KitKat已经使用基于Chromium的WebView。 无论如何,这可以给您一个提示: https : //developer.chrome.com/multidevice/webview/overview您应该在设备的Play商店中检查WebView软件包的版本,以查看其是否已更新,因为您使用的是旧版本此特定设备中的版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM