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

Unity原生Java插件调用checkSelfPermission崩溃问题求助

Unity调用Java插件检查权限崩溃:找不到androidx.core.content.ContextCompat解决方案

从调试日志的java.lang.ClassNotFoundException: androidx.core.content.ContextCompat可以直接定位问题:你的Unity项目没有包含AndroidX Core库,但Java插件中使用了依赖该库的ContextCompat.checkSelfPermission方法,导致运行时找不到类而崩溃。

解决方案一:改用原生Android API(无需依赖AndroidX)

如果你的项目最低支持Android API 23(Android 6.0)及以上,checkSelfPermission已经是Context类的原生方法,完全可以替代ContextCompat的实现,直接修改Java插件代码:

public class callFromUnity{

    public String checkPermission(Context context)
    {
        if (context.checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            return  "is ok";
        }
        else
        {
            return "is not ok";
        }
    }
}

这个方案最简洁,不需要额外引入任何库,直接解决崩溃问题。

解决方案二:在Unity中引入AndroidX Core库(兼容低版本API)

如果需要兼容API 23以下的设备,必须引入AndroidX Core库,步骤如下:

  1. 打开Unity编辑器,进入Edit > Project Settings > Player > Android > Publishing Settings,勾选Custom Main Gradle Template和Custom Base Gradle Template
  2. 在项目目录中找到生成的Assets/Plugins/Android/baseProjectTemplate.gradle文件,打开后在dependencies代码块中添加AndroidX Core依赖:
dependencies {
    // 保留原有依赖,新增以下行
    implementation 'androidx.core:core:1.10.1' // 可替换为最新稳定版本
}
  1. 检查Assets/Plugins/Android/gradle.properties文件,确保已开启AndroidX支持:
android.useAndroidX=true
android.enableJetifier=true
  1. 重新构建Android项目,Unity会自动将AndroidX Core库打包进APK。

额外优化建议

  • 权限检查时,使用Unity的currentActivity作为上下文比ApplicationContext更稳妥(官方推荐用Activity上下文处理权限相关操作),可以修改C#代码中的上下文获取逻辑:
// 替换原来的context = unityActivity.Call<AndroidJavaObject>("getApplicationContext");
context = unityActivity; // 直接使用当前Activity作为上下文
  • 你之前尝试的继承Activity/ContextCompat无法解决问题,因为核心矛盾是缺少AndroidX库,而非类的继承关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:14:56