NoSuchMethodError when calling the putExtra Java/Android method

Hi Guys,

I’m trying to start another Android App with some extra intent data. Here is my code:

    public static bool OpenApp(string packageName, string extraKey = "", string extraValue = "")
    {
#if UNITY_ANDROID
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject unityActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject pManager = unityActivity.Call<AndroidJavaObject>("getPackageManager");

        AndroidJavaObject intent = null;
        try
        {
            intent = pManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName);
            if(extraKey != "")
            {
                intent.Call<AndroidJavaClass>("putExtra", extraKey, extraValue);
            }

            unityActivity.Call("startActivity", intent);
            return true;
        }
        catch (Exception e)
        {
            ...
        }
#endif
        return false;
    }

But this always throws:

Failed to Opeen App: java.lang.NoSuchMethodError: no non-static method with name=‘putExtra’ signature=‘(Ljava/lang/String; Ljava/lang/String; )Ljava/lang/Class;’ in class Ljava.lang.Object;

However there does seem to be a method on Intent called ‘putExtra’ which takes two strings see here.

Any ideas what could be wrong?

Thanks

I´m not sure, but could the problem be, that you try to call the non static method “putExtra” in you static method ?

Thanks for the idea. I actually just solved the issue. It ended up being that this:

intent.Call<AndroidJavaClass>("putExtra", extraKey, extraValue);

should have been:

intent.Call<AndroidJavaObject>("putExtra", extraKey, extraValue);
2 Likes