- Home /
Problem with call static methods in plugin
How to call C# to java?
I find some method in website but it not work.
Here is my c# script
var activityJavaClass=new AndroidJavaClass("com.unity3d.player.UnityPlayer");
if(activityJavaClass!=null){
Debug.Log("UnityPlayer class not null");
// To get the activity
var currentActivityJavaObject=activityJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject app = currentActivityJavaObject.Call<AndroidJavaObject>("getApplicationContext");
if(currentActivityJavaObject!=null){
Debug.Log("currentActivity object of UnityPlayer not null");
var manager=GetComponent<CapturedScreenManager>()as CapturedScreenManager;
if(manager!=null){
//string path="/storage/emulated/0/DCIM/Camera/VID_20151017_072913.mp4";
string path=manager.androidSavePath;
if(path==null|| string.Equals(path,"")){
Debug.LogError("Android save path is null or empty");
return;
}
Debug.Log("About to share to Youku from path: " + path);
// To get the share video class
AndroidJavaClass javaClass=new AndroidJavaClass("com.youku.uploader.ShareToYouku");
if(javaClass!=null){
Debug.Log ("ShareToYouku java class not null");
currentActivityJavaObject.Call("runOnUiThread", new AndroidJavaRunnable(() =>{
javaClass.CallStatic("GetDataFromUnity", new object[]{ "32e7028d0a42009c","50cc4b8cfe70fd56ccdfecd7460e88b5",accessToken,title,tag, path, app});
}));
}else{
Debug.LogError("ShareToYouku java class is null");
}
}else{
Debug.LogError("Captured screen manager is null");
}
}else {
Debug.LogError("currentActivity object of UnityPlayer is null");
}
}else{
Debug.LogError("UnityPlayer class is null");
}
Here is my java script
public static void GetDataFromUnity(String clientID,String client_secret,String access_token, String title, String tags, String file_name, Context context)
I already add jar into Plugin>Android. But it show error after the Debug Log (ShareToYouku java class not null)
11-10 13:02:10.466: I/Unity(3354): AndroidJavaException: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.youku.uploader.YoukuUploader.upload(java.util.HashMap, java.util.HashMap, com.youku.uploader.IUploadResponseHandler)' on a null object reference
11-10 12:05:45.585: I/Unity(20610): at UnityEngine._AndroidJNIHelper.GetSignature (System.Object obj) [0x00000] in <filename unknown>:0
11-10 12:06:48.950: I/Unity(20610): at UnityEngine._AndroidJNIHelper.GetSignature (System.Object[] args) [0x00000] in <filename unknown>:0
11-10 12:06:48.950: I/Unity(20610): at UnityEngine._AndroidJNIHelper.GetMethodID (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
11-10 12:06:48.950: I/Unity(20610): at UnityEngine.AndroidJNIHelper.GetMethodID (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
11-10 12:07:56.735: I/Unity(20610): at UnityEngine.AndroidJavaObject._CallStatic (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
11-10 12:07:56.735: I/Unity(20610): at UnityEngine.AndroidJavaObject.CallStatic (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
11-10 12:07:56.735: I/Unity(20610): at UIButtonShare+<GetAccessToken>c__AnonStorey39+<GetAccessToken>c__AnonStorey36.<>m__60 () [0x00000] in <f
Comment
After change some scripts, the first line of error is turn to 11-10 17:31:44.506: I/Unity(13572): AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/loopj/android/http/AsyncHttpClient;