Я пытаюсь понять, как создать свои собственные Android плагины для Android.
Я добиваюсь вызова методов stati c для моего класса Java (созданного в AndroidStudio ), но я действительно не могу вызывать нестати c методы.
Я проверяю эти ссылки:
Но ни один не работает.
Я пытаюсь получить звонок от кнопки из Unity, например:
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = UnityPlayer.Get<AndroidJavaObject>("currentActivity");
currentActivity.Call("SayHi");
И моя активность на Android выглядит следующим образом:
public class MainActivity extends UnityPlayerActivity {
private static final String TAG = "LibraryTest";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "Created!");
}
public void SayHi()
{
Log.d(TAG, "HI_");
}
}
Мой АБР выдает это сообщение:
Я также пытался звонить вместо вызова UnityPlayer это как:
AndroidJavaClass pluginClass = new AndroidJavaClass("com.example.eric.librarytest.MainActivity");
РЕДАКТИРОВАТЬ: Это мой AndroidManifest. xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.eric.librarytest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="24"
android:targetSdkVersion="28" />
<application android:label="@string/app_name" >
<activity
android:name="com.example.eric.librarytest.MainActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Но не работает ни для non-stati c методы, это работает только для stati c методов, если я делаю pluginClass.CallStatic("")
, любая идея?
EDIT 2:
Тарас Лескив предлагаем изменить UnityPlayer.Get на UnityPlayer.GetStati c, но затем я получаю следующую ошибку:
ошибка: java .lang.NoSuchMethodError: нет не-Stati c метод с именем = 'SayHi' signature = '() V' в классе L java .lang.Object;
- Proguard не активен.