bool fail = false;
string bundleId = "com.xxxx.另外一个应用包名";
AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject ca = up.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject packageManager = ca.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject launchIntent = null;
try
{
launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage",bundleId);
}
catch (System.Exception e)
{
fail = true; // 应用未安装
}
if (fail)
{
//跳转应用下载地址
Application.OpenURL("www.app.com");
}
else
ca.Call("startActivity",launchIntent);
up.Dispose();
ca.Dispose();
packageManager.Dispose();
launchIntent.Dispose();
如果要传递数据给另外一个app,调用putExtra即可
launchIntent.Call<AndroidJavaObject>("putExtra", "arguments", "aaaaaaaaaaaaaaaaa");
在被调起的应用中用getExtra得到传递过来的数据
void getExtra()
{
string arguments = "";
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent");
bool hasExtra = intent.Call<bool>("hasExtra", "arguments");
if (hasExtra)
{
AndroidJavaObject extras = intent.Call<AndroidJavaObject>("getExtras");
arguments = extras.Call<string>("getString", "arguments");
Debug.Log(arguments);
}
else
{
Debug.Log("No auguments");
}
}