You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法解析符号ContextCompat,如何获取android-support-v4.jar?

解决ContextCompat无法解析及support-v4库依赖问题

嘿,其实你不用费心手动找android-support-v4.jar的——看你的build.gradle,已经添加了com.android.support:support-v4:23.1.0的依赖,Android Studio本来会自动从仓库拉取这个库。出现Cannot resolve symbol ContextCompat的报错,大概率是依赖没同步成功,或者配置有小问题,按下面的步骤来解决:

第一步:先同步Gradle依赖

  • 点击Android Studio右上角那个大象图标(Sync Project with Gradle Files),等待同步完成。如果同步时提示下载失败,检查下你的网络能不能正常访问jcenter和maven.google.com这两个仓库。
  • 如果同步还是不行,试试清理项目缓存:点顶部菜单栏的File -> Invalidate Caches / Restart,选Invalidate and Restart,重启后再同步一遍。

第二步:调整依赖配置(可选但推荐)

你的dependencies里用的是旧的compile关键字,在Android Studio 3.0+版本里,官方已经推荐用implementation替代compile了,虽然旧写法还能兼容,但换成新的能避免一些潜在问题:

implementation 'com.android.support:support-v4:23.1.0'

另外你的compileSdkVersion是23,support库版本23.1.0和它匹配,这部分是没问题的。

万不得已才手动加jar包(不推荐)

如果自动同步实在搞不定,那再手动下载:

  • 打开SDK Manager(Tools -> SDK Manager),切换到SDK Tools标签,勾选Show Package Details
  • 找到Android Support Library,展开后选和你compileSdkVersion匹配的23.1.0版本,点Apply下载
  • 下载完后,jar包在你的SDK目录/extras/android/m2repository/com/android/support/support-v4/23.1.0/support-v4-23.1.0.jar,把它复制到项目的libs文件夹里,你的build.gradle已经有compile fileTree(include: ['*.jar'], dir: 'libs'),所以不用额外配置了。

顺便提下你的权限判断逻辑

你的checkPermission()方法逻辑有点问题哦:现在的判断是两个权限都没授予才返回true,但实际上只要有一个没授予,就应该去申请权限。而且在Android 6.0+(API23)里,申请WRITE_EXTERNAL_STORAGE的时候会自动包含READ_EXTERNAL_STORAGE权限,所以可以简化成这样:

private boolean checkPermission() {
    return ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED;
}

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

火山引擎 最新活动