Android WebView 中的 获取定位权限操作

作者: 龙哥 分类: 技术 发布时间: 2022-01-16 00:45 ė2,403 次浏览

饿了么、美团等每日红包领取,都需要获取定位,废话不多说,直接跑正题

WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient(){
    @Override
    //定位
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, true);
super.onGeolocationPermissionsShowPrompt(origin, callback);
    }
});

在指定页面判断并获取定位权限:

mWebView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("ele.me") || url.contains("meituan.com")) {
    if (Build.VERSION.SDK_INT >= 23) {
int checkPermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION);
if (checkPermission != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
    }
    return false;
}
return false;
    }
});

还有最后一步,别忘了在 Manifest 清单文件中添加定位相关的权限,当然也包括网络权限:(通过 GPS 精准定位和 WI-FI 的粗略定位)

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

搞定了~

本文出自 俞凌龙博客,转载时请注明出处及相应链接。

本文永久链接: https://blog.jlwz.cn/285

Ɣ回顶部