简略记录一下:
1,在 Unity 中直接打开其他应用apk的方法
void openPackage(string pkgName)
{
using (AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject joActivity = jcPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
using (AndroidJavaObject joPackageManager = joActivity.Call<AndroidJavaObject>("getPackageManager"))
{
try
{
using (AndroidJavaObject joIntent = joPackageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", pkgName))
{
if (null != joIntent)
{
// 启动应用程序
joActivity.Call("startActivity", joIntent);
}
}
}
catch (System.Exception ex)
{
Debug.Log(ex);
}
}
}
}
}
2,打开并传参:
void openPackage(string pkgName,string str1,string str2,string str3)
{
using (AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject joActivity = jcPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
using (AndroidJavaObject joPackageManager = joActivity.Call<AndroidJavaObject>("getPackageManager"))
{
try
{
using (AndroidJavaObject joIntent = joPackageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", pkgName))
{
if (null != joIntent)
{
// 创建 Bundle 对象用于存储额外的键值对参数
AndroidJavaObject bundle = new AndroidJavaObject("android.os.Bundle");
// 向 Bundle 中添加键值对参数
bundle.Call("putString", "path1", path1);
bundle.Call("putString", "path2", path2);
bundle.Call("putString", "path3", path3);
// 将 Bundle 对象作为参数传递给 Intent 的 putExtras 方法
joIntent.Call<AndroidJavaObject>("putExtras", bundle);
// 启动应用程序
joActivity.Call("startActivity", joIntent);
}
}
}
catch (System.Exception ex)
{
Debug.Log(ex);
}
}
}
}
}
3,获取另一个程序传过来的参数:
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", "path");
if (hasExtra)
{
AndroidJavaObject extras = intent.Call<AndroidJavaObject>("getExtras");
string Path1 = extras.Call<string>("getString", "path1");
string Path2 = extras.Call<string>("getString", "path2");
string Path3 = extras.Call<string>("getString", "path3");
}
else
{
Debuger.Logger("------ Has not extra!");
}
over!!!