已在Manifest中添加权限却仍显示「Missing permission」报错的问题求助
解决Manifest已添加权限仍提示「Missing permission」的问题
我之前也碰到过完全一样的坑!明明在Manifest里写了权限,各种清理重启都没用,最后才发现是几个容易被忽略的细节,给你列几个排查方向:
检查权限声明的位置是否正确
很多人会不小心把<uses-permission>标签放到<application>标签内部了,这是无效的!必须把所有权限声明放在Manifest文件的根节点下,和<application>标签同级,比如正确的结构应该是:<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.yourapp"> <!-- 权限必须放在这里,根节点下 --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" ...> <!-- 应用组件放在这里 --> </application> </manifest>针对位置权限的额外适配
如果你的目标SDK是Android 10(API 29)及以上,当你需要在后台获取位置时,还需要添加ACCESS_BACKGROUND_LOCATION权限;如果是Android 12(API 31)及以上,精确位置权限的请求逻辑也有变化,Lint可能会因为这个触发警告。可以先检查你的targetSdkVersion,如果符合的话,补上对应的权限试试:<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />彻底清除Lint和构建缓存
有时候Invalidate and Restart不够彻底,可以手动做这些操作:- 关闭Android Studio,删除项目根目录下的
.gradle和.idea文件夹 - 删除模块目录下的
build文件夹 - 重新打开项目,执行
Clean Project再Rebuild Project
- 关闭Android Studio,删除项目根目录下的
检查Lint警告的具体指向
仔细看警告的完整信息,它会告诉你缺少的是哪个权限、对应的代码位置是什么。比如是不是你调用了某个需要额外权限的方法(比如蓝牙、存储相关),但你只加了网络和位置权限?别只盯着你已经加的那几个权限,跟着警告提示找根源。
如果这些方法都没用,可以把警告的完整截图或者具体提示内容贴出来,我再帮你排查!
内容的提问来源于stack exchange,提问作者abusaeed2433
相关产品推荐
相关产品推荐

