- Home /
[ANDROID] How can this intent be made in Unity?
Hi! I'm trying to launch an emulator from my frontend made in Unity. I tried with Retroarch, and while I could launch it, I couldn't make it detect parameters like the rom path (I get no error messages, just that Retroarch seems to ignore it), so I moved to another emulator: MD.emu.
Now I'm having a similar issue. I saw this intent code example for this emulator:
public Intent getEmulatorIntent(String fileName, String ime, Context context) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.explusalpha.MdEmu", "com.imagine.BaseActivity"));
intent.setAction("android.intent.action.VIEW");
intent.setData(Uri.fromFile(new File(fileName)));
return intent;
}
And also this adb command: start -n com.explusalpha.MdEmu/com.imagine.BaseActivity -a android.intent.action.VIEW -eu Uri "file://%rom%"
Now, I've tried some Unity intent examples I've found, and this is how far I got:
bool fail = false;
string bundleId = "com.explusalpha.MdEmu";
string romPath = currentGame.romPath;
AndroidJavaClass unityPlayerClass = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject> ("currentActivity");
AndroidJavaObject packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject intent = null;
try {
intent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", bundleId);
AndroidJavaClass uriClass = new AndroidJavaClass ("android.net.Uri");
AndroidJavaObject uri = uriClass.CallStatic<AndroidJavaObject> ("parse", romPath);
intent.Call ("setData", uri);
}
catch (System.Exception e) {
fail = true;
Debug.Log ("ERROR: " + e.ToString ());
}
if (!fail) {
currentActivity.Call ("startActivity", intent);
}
unityPlayerClass.Dispose();
currentActivity.Dispose();
packageManager.Dispose();
intent.Dispose();
With this code I get an error on the line "intent.Call ("setData", uri);", saying that such method doesn't exist.
Could anybody give me some hint about adapting that (apparently working) Java code to Unity, please? Well, the only pending thing is the "setData" for setting the rom path.
I'm not sure about the "-eu" parameter in the adb command. I think -e is for "putExtra", but I can't find what "-eu" would be.