Мне нужно передать целочисленное значение из приложения Unity на Android с использованием намерения. Приложение Android реализует приемник, который ожидает, что это целое число станет дополнительным параметром в Intent.Не удается передать целое число - в качестве дополнительного в намерении - от Unity до Android-приложения
My Unity (C#) код выглядит следующим образом:
int timestamp = 0; // whatever value
var playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
var intent = new AndroidJavaObject("android.content.Intent", ACTION_LOCK_DATE);
intent.Call("putExtra", "timestamp", timestamp);
activity.Call("sendBroadcast", intent);
Но при запуске его, я получаю сообщение об ошибке:
I/Unity (4034): AndroidJavaException: java.lang.NoSuchMethodError: no method with name='putExtra' signature='(Ljava/lang/String;I)V' in class Landroid/content/Intent;
I/Unity (4034): java.lang.NoSuchMethodError: no method with name='putExtra' signature='(Ljava/lang/String;I)V' in class Landroid/content/Intent;
I/Unity (4034): at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
I/Unity (4034): at com.unity3d.player.UnityPlayer.a(Unknown Source)
I/Unity (4034): at com.unity3d.player.UnityPlayer$b.run(Unknown Source)
Как будто это не признание в качестве второго параметра INT , Любые подсказки? Я также пробовал передать массив объектов с String и int, но он показывает ту же ошибку. Передача его в качестве экземпляра Integer не работает, либо, жалуясь, что нет никакого способа putExtra с с Последовательностью и Integer в качестве параметров:
var playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
var intent = new AndroidJavaObject("android.content.Intent", ACTION_LOCK_DATE);
var integerClass = new AndroidJavaClass("java.lang.Integer");
var ts = integerClass.CallStatic<AndroidJavaObject>("valueOf", timestamp);
intent.Call("putExtra", "timestamp", ts);
activity.Call("sendBroadcast", intent);
Что мне не хватает? Я собираюсь попробовать просто разобрать и передать его как строку, но я хотел бы избежать этого и иметь возможность передать его как число.
Это ошибка одна для первой версии или второй? Потому что он говорит 'no method с именем = 'putExtra'', который, как вы сказали, является ошибкой для второго. –
обе ошибки касаются не нахождения 'putExtra', первый упоминает один с параметром' String', второй раз он жалуется на 'String' и' Integer' (класс, а не нативный тип). – Sebastian
java.lang.Integer.class! = Int.class и нет метода 'putExtra (String name, Integer value)' but 'putExtra (String name, int value)' – Selvin