You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在集成Google Maps的WebView安卓应用中获取当前定位

Android WebView 无法获取定位问题解决方案
  • 补充运行时动态权限申请
    Android 6.0(API 23)及以上系统中,ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION属于危险权限,仅在AndroidManifest中声明不生效,需要在加载WebView前主动向用户申请权限,用户同意后方可调用定位能力。
    参考代码:
// 加载WebView前先检查定位权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // 未授权,发起权限申请
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1001);
} else {
    // 已授权,直接加载网页
    webView.loadUrl("你的Google Maps页面地址");
}

// 重写权限申请结果回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 1001) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 权限申请通过,加载网页
            webView.loadUrl("你的Google Maps页面地址");
        } else {
            // 权限被拒绝,可提示用户定位权限为地图功能必需权限
        }
    }
}
  • 配置WebView定位相关属性
    需要手动开启WebView的定位支持,同时重写WebChromeClient的定位权限回调,将系统权限授予网页使用:
WebSettings webSettings = webView.getSettings();
// 开启JavaScript支持(Google Maps必须开启)
webSettings.setJavaScriptEnabled(true);
// 开启WebView定位功能
webSettings.setGeolocationEnabled(true);
// 配置定位权限缓存路径,避免网页重复申请定位权限
webSettings.setGeolocationDatabasePath(getFilesDir().getPath());

// 配置WebChromeClient处理网页的定位申请
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
        // 直接授予当前网页定位权限,也可自定义弹窗由用户确认后再授权
        callback.invoke(origin, true, false);
    }
});
  • 检查系统定位开关状态
    如果用户设备的总定位开关(位置信息/GPS)未开启,即便应用有授权也无法获取位置,可提前检测开关状态,引导用户开启定位。
  • 高版本系统适配
    如果应用目标SDK为Android 12(API 31)及以上,需要注意系统新增了精/粗略定位的单独授权选项,Google Maps需要精定位权限才能正常获取当前位置,申请权限时要确认用户是否授予了精定位权限。

内容的提问来源于stack exchange,提问作者rndmntzn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:15:03