Tôi đang cố gắng hiểu cách xây dựng các plugin Android của riêng mình cho Android.
Tôi đạt được để gọi các phương thức tĩnh trên lớp Java của tôi (một phương thức được tạo trên AndroidStudio), nhưng tôi thực sự KHÔNG THỂ gọi các phương thức không tĩnh.
Tôi kiểm tra các liên kết đó:
https://answers.unity.com/questions/884503/cant-call-non-static-method-in-androidjavaclass.html
http://leoncvlt.com/blog/a-primer-on-android-plugin-development-in-unity/
https://answers.unity.com/questions/1327186/how-to-get-intent-data-for-unity-to-use.html
- Làm thế nào để gọi phương thức Không tĩnh từ Plugin Unity Android?
Nhưng không có tác dụng.
Tôi đang cố gắng nhận cuộc gọi từ một nút từ Unity như:
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = UnityPlayer.Get<AndroidJavaObject>("currentActivity");
currentActivity.Call("SayHi");
Và hoạt động của tôi trên Android trông giống như:
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_");
}
}
ADB của tôi đang gửi thông điệp này:
Tôi cũng đã thử gọi thay vì UnityPlayer gọi nó như sau:
AndroidJavaClass pluginClass = new AndroidJavaClass("com.example.eric.librarytest.MainActivity");
EDIT: Đây là AndroidManifest.xml của tôi
<?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>
Nhưng không hoạt động cho các phương thức không tĩnh, nó chỉ hoạt động cho các phương thức tĩnh nếu tôi làm pluginClass.CallStatic("")
, có ý tưởng nào không?
EDIT 2:
Taras Leskiv đề nghị thay đổi UnityPlayer.Get thành UnityPlayer.GetStatic, nhưng sau đó tôi gặp lỗi sau:
lỗi: java.lang.NoSuchMethodError: không có phương thức không tĩnh với tên = 'SayHi' chữ ký = '() V' trong lớp Ljava.lang.Object;
- Proguard không hoạt động.
Activity
. Vì vậy, bạn có thể cần phải đúc nó bằng cách nào đó.