已在Manifest声明READ_EXTERNAL_STORAGE,仍出现未解析引用错误
解决Unresolved reference: READ_EXTERNAL_STORAGE报错
针对你遇到的代码中Manifest.permission.READ_EXTERNAL_STORAGE无法解析的问题,按以下步骤排查解决:
1. 检查权限常量的导入
确保代码文件顶部已正确导入Android系统的Manifest类:
import android.Manifest
如果你的项目中存在自定义的Manifest类(比如自己创建的同名文件),会导致混淆,此时可以改用完整路径引用:
android.Manifest.permission.READ_EXTERNAL_STORAGE
2. 适配Android 13+的权限变更
如果你的项目targetSdkVersion设置为33及以上,Android 13开始拆分了存储权限,读取图片应使用新的权限常量READ_MEDIA_IMAGES,而非READ_EXTERNAL_STORAGE。可以按版本做兼容处理:
val requiredPermission = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { Manifest.permission.READ_MEDIA_IMAGES } else { Manifest.permission.READ_EXTERNAL_STORAGE } // 后续检查和请求权限都用requiredPermission ContextCompat.checkSelfPermission(applicationContext, requiredPermission)
同时记得在Manifest中添加对应权限:
<!-- Android 13+ 读取图片权限 --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <!-- 兼容Android 12及以下 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
3. 清理Android Studio缓存同步gradle
如果以上都没问题,大概率是IDE缓存导致的:
- 执行
File -> Sync Project with Gradle Files同步项目 - 执行
File -> Invalidate Caches... -> Invalidate and Restart清理缓存并重启IDE
内容的提问来源于stack exchange,提问作者Captai-N
相关产品推荐
相关产品推荐

