100 lines
2.9 KiB
C#
100 lines
2.9 KiB
C#
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
public class ReadParameters : MonoBehaviour
|
|
{
|
|
/*
|
|
val intent = packageManager.getLaunchIntentForPackage("com.myrobot.RobotIngles")
|
|
intent?.putExtra("screen", "conversation")
|
|
startActivity(intent)
|
|
|
|
ou
|
|
|
|
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("myrobotingles://open?screen=conversation"))
|
|
startActivity(intent)
|
|
|
|
ou
|
|
|
|
adb shell am start -n com.myrobot.RobotIngles/com.unity3d.player.UnityPlayerActivity --es screen conversation
|
|
*/
|
|
|
|
LoginAPI loginApi;
|
|
static string screen = "";
|
|
|
|
void Start()
|
|
{
|
|
loginApi = GetComponent<LoginAPI>();
|
|
|
|
DontDestroyOnLoad(gameObject);
|
|
|
|
screen = GetScreenFromAndroidIntent();
|
|
|
|
if (PlayerPrefs.GetInt("Logado") == 1)
|
|
StartCoroutine(loginApi.HttpLogin());
|
|
else
|
|
LoadScene();
|
|
}
|
|
|
|
public static void LoadScene()
|
|
{
|
|
if (!string.IsNullOrEmpty(screen))
|
|
{
|
|
PlayerPrefs.SetString("Cena", screen);
|
|
}
|
|
|
|
if (PlayerPrefs.GetInt("Logado") == 0)
|
|
SceneManager.LoadScene("Login");
|
|
//else if (screen == "conversation")
|
|
// SceneManager.LoadScene("FaceConversation");
|
|
else
|
|
SceneManager.LoadScene("SampleScene");
|
|
}
|
|
|
|
string GetScreenFromAndroidIntent()
|
|
{
|
|
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
try
|
|
{
|
|
using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
|
using (var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
|
|
using (var intent = activity.Call<AndroidJavaObject>("getIntent"))
|
|
{
|
|
// 1) Deep link: Intent.getData()
|
|
var data = intent.Call<AndroidJavaObject>("getData");
|
|
if (data != null)
|
|
{
|
|
string url = data.Call<string>("toString");
|
|
// Ex: meuapp://open?screen=conversation
|
|
var parsed = AndroidUriParseQuery(url, "screen");
|
|
if (!string.IsNullOrEmpty(parsed)) return parsed;
|
|
}
|
|
|
|
// 2) Extras: intent.getStringExtra("screen")
|
|
string extra = intent.Call<string>("getStringExtra", "screen");
|
|
if (!string.IsNullOrEmpty(extra)) return extra;
|
|
}
|
|
}
|
|
catch (System.Exception e)
|
|
{
|
|
Debug.Log("Erro lendo Intent: " + e.Message);
|
|
}
|
|
#endif
|
|
return null;
|
|
}
|
|
|
|
// Parsing simples sem libs
|
|
string AndroidUriParseQuery(string url, string key)
|
|
{
|
|
int idx = url.IndexOf('?');
|
|
if (idx < 0) return null;
|
|
string query = url.Substring(idx + 1);
|
|
string[] parts = query.Split('&');
|
|
foreach (var p in parts)
|
|
{
|
|
var kv = p.Split('=');
|
|
if (kv.Length == 2 && kv[0] == key) return System.Uri.UnescapeDataString(kv[1]);
|
|
}
|
|
return null;
|
|
}
|
|
}
|