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

Android Studio忽略Manifest权限条目,设置GoogleMap我的位置仍报权限缺失

解决GoogleMap位置权限IDE误报问题

以下是针对你遇到的IDE提示权限缺失但实际功能正常的解决步骤:

  • 同步项目并清理IDE缓存
    这是最常见的IDE缓存导致的识别异常:

    1. 点击顶部菜单栏 File → Sync Project with Gradle Files
    2. 再点击 File → Invalidate Caches...,选择 Invalidate and Restart 重启Android Studio
  • 确认权限在正确的Manifest文件中
    检查你添加权限的是app/src/main/AndroidManifest.xml,而非debug、release或其他变体目录下的Manifest文件,多渠道打包项目容易出现改错文件的情况。

  • 完善运行时权限检查逻辑
    目前的检查只覆盖了ACCESS_FINE_LOCATION,建议同时包含两个权限的检查,并补充权限请求和回调处理:

    // 定义请求码常量
    private static final int LOCATION_PERMISSION_REQUEST_CODE = 1001;
    
    // 权限检查与启用位置
    private void enableMyLocation() {
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            if (savedGoogleMap != null) {
                savedGoogleMap.isMyLocationEnabled = true;
            }
        } else {
            // 请求权限
            ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
                LOCATION_PERMISSION_REQUEST_CODE);
        }
    }
    
    // 权限请求回调处理
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
            boolean hasPermission = false;
            for (int result : grantResults) {
                if (result == PackageManager.PERMISSION_GRANTED) {
                    hasPermission = true;
                    break;
                }
            }
            if (hasPermission && savedGoogleMap != null) {
                savedGoogleMap.isMyLocationEnabled = true;
            }
        }
    }
    
  • 添加硬件特性声明(可选)
    在Manifest中添加位置硬件支持声明,避免部分设备的兼容性问题:

    <uses-feature android:name="android.hardware.location.gps" android:required="false" />
    <uses-feature android:name="android.hardware.location.network" android:required="false" />
    

    android:required="false" 表示不强制要求设备具备该硬件,不会限制应用安装范围。

  • 屏蔽Lint误报(最后手段)
    如果以上操作后IDE仍提示错误,可通过注解屏蔽Lint的误判,但必须确保运行时权限检查逻辑完整:

    @SuppressLint("MissingPermission")
    savedGoogleMap.isMyLocationEnabled = true;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:20:31