- Home /
Accessing Data from a Android java class
I am trying to access what level that has been choosen when starting the Unity application. Unity is started from my (Android java) UnityPlay class. I want to know what button that was pressed to launch Unity to know what scene to load.
The UnityPlay class:
package com.company.project;
...
public class UnityPlay extends UnityPlayerActivity{
public String selectedItem;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public String getSelectedItem() {
selectedItem = "levelname";
return selectedItem;
}
}
In Unity a script is created and added to a object:
function Start() {
yield WaitForSeconds(3.0);
var jo = new AndroidJavaObject("com.company.project.UnityPlay");
var level = jo.Call.<String>("getSelectedItem");
Application.LoadLevel(level);
}
As far as I can see the return value of the request is null or a blank String "".
Answer by liortal · May 26, 2014 at 05:52 PM
There are some issues with the code you posted:
Did you update the AndroidManifest.xml with details about your new custom Activity class?
In your Start() method, you are creating a AndroidJavaObject, which means you are attempting to build a new UnityPlay object in Java. What you intent to do is grab the active Activity class and call methods on it.
What you should do is provide some global (e.g: static) access to your UnityPlay class, grab that instance that is already created at startup by Android, and then call the getSelecdtedItem method on it.
In your Activity class, add a new static field:
public static UnityPlay activity;
In your onCreate, initialize this field:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = this;
}
Then, in your Unity code:
function Start() {
yield WaitForSeconds(3.0);
var jc = new AndroidJavaClass("com.company.project.UnityPlay");
var activity = jc.GetStatic<AndroidJavaObject>("activity");
var level = activity.Call.<String>("getSelectedItem");
Application.LoadLevel(level);
}
This is all in theory, i haven't tested it.
Your answer
Follow this Question
Related Questions
How do I use Java callbacks? 1 Answer
Using AndroidJavaObject properly 1 Answer
How to translate ArrayList to C# using AndroidJavaClass? 1 Answer
NoSuchMethodError calling android method 2 Answers