i have a projet in Unity 3d who use a jave plugin. In this plugin i need to check if user have already enable the permission. But everytime i call checkSelfPermission the app crash and i dont know why.
Java plugin(module)
public class callFromUnity{
public String checkPermission(Context context)
{
if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
return "is ok";
}
else
{
return "is not ok";
}
}
}
Unity C#
AndroidJavaClass unityClass;
AndroidJavaObject unityActivity;
AndroidJavaObject pluginsInstance;
AndroidJavaObject context;
public Text texte;
void Start()
{
enablePlugins("com.mypackage.test.callFromUnity");
test();
}
void enablePlugins(string pluginName)
{
unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
context = unityActivity.Call<AndroidJavaObject>("getApplicationContext");
pluginsInstance = new AndroidJavaObject(pluginName);
if (pluginsInstance == null)
{
}
else
{
// this method is hide in the Java plugins because i remove the code for simplify this question
pluginsInstance.CallStatic("receiveUnityActivity", unityActivity);
}
}
void test()
{
texte.text = pluginsInstance.Call<string>("checkPermission", context);
}
in debug i have this log
2023-04-21 01:10:57.881 28263 28303 Error Unity AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/content/ContextCompat;
2023-04-21 01:10:57.881 28263 28303 Error Unity java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/content/ContextCompat;
2023-04-21 01:10:57.881 28263 28303 Error Unity at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
2023-04-21 01:10:57.881 28263 28303 Error Unity at com.unity3d.player.UnityPlayer.access$300(Unknown Source:0)
2023-04-21 01:10:57.881 28263 28303 Error Unity at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source:95)
2023-04-21 01:10:57.881 28263 28303 Error Unity at android.os.Handler.dispatchMessage(Handler.java:106)
2023-04-21 01:10:57.881 28263 28303 Error Unity at android.os.Looper.loop(Looper.java:219)
2023-04-21 01:10:57.881 28263 28303 Error Unity at com.unity3d.player.UnityPlayer$e.run(Unknown Source:20)
2023-04-21 01:10:57.881 28263 28303 Error Unity Caused by: java.lang.ClassNotFoundException: androidx.core.content.ContextCompat
2023-04-21 01:10:57.881 28263 28303 Error Unity ... 6 more
2023-04-21 01:10:57.881 28263 28303 Error Unity at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <00000000000000000000000000000000>:0
2023-04-21 01:10:57.881 28263 28303 Error Unity at UnityEngine.AndroidJNISafe.FindClass (System.String name) [0x00000] in <00000000000000000000000000000000>:0
2023-04-21 01:10:57.881 28263 28303 Error Unity at UnityEngine.AndroidJavaObject._AndroidJavaObject (System.String className, System.Object[] args) [0x00000] in <00000000000000000000000000000000>
i have try to expand my class to Activity, or ContextCompat or remove the context arguments and remplace by "this". But for now nothing work.