Application.OpenURL 函数无法做到这一点。我以前做过,愿意分享。您可以制作一个 Java 插件来执行此操作,也可以使用 AndroidJavaClass 和 C# 来执行此操作。我是用 C# 做的,因为这是一个简单的插件。
打开任何应用程序:
public bool openUrl(string packageName)
{
#if UNITY_ANDROID
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject pManager = unityActivity.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject intent = null;
try
{
intent = pManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName);
unityActivity.Call("startActivity", intent);
return true;
}
catch (Exception e)
{
Debug.LogWarning("Failed to Opeen App: " + e.Message);
//Open with Browser
string link = "https://play.google.com/store/apps/details?id=" + packageName + "&hl=en";
Application.OpenURL(link);
return false;
}
#endif
return false;
}
用法:
bool success = openUrl("com.google.android.apps.plus");
打开另一个应用程序然后传入 URL:
public bool openUrl(string packageName, string url)
{
#if UNITY_ANDROID
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject pManager = unityActivity.Call<AndroidJavaObject>("getPackageManager");
//For accessing static strings(ACTION_VIEW) from android.content.Intent
AndroidJavaClass intentStaticClass = new AndroidJavaClass("android.content.Intent");
string actionView = intentStaticClass.GetStatic<string>("ACTION_VIEW");
//Create Uri
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", url);
//Psss ACTION_VIEW and Uri.parse to the intent
AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", actionView, uriObject);
try
{
if (pManager.Call<AndroidJavaObject>("getPackageInfo", packageName, 0) != null)
{
intent.Call<AndroidJavaObject>("setPackage", packageName);
}
}
catch (Exception e)
{
Debug.LogWarning("Failed to Open App 1: " + e.Message);
return false;
}
try
{
unityActivity.Call("startActivity", intent);
return true;
}
catch (Exception e)
{
Debug.LogWarning("Failed to Open App 2: " + e.Message);
//Open with Browser
string link = "https://play.google.com/store/apps/details?id=" + packageName + "&hl=en";
Application.OpenURL(link);
return false;
}
#endif
return false;
}
用法:
bool success = openUrl("com.google.android.apps.plus", "https://plus.google.com/+JewelMash");
您正在寻找第二个代码。如果您想查找另一个应用程序的包名称,请使用下图:
此解决方案适用于 Android。您将需要 Object-C 插件在 iOS 中执行此操作。我建议你问一个关于如何在 iOS 中执行此操作的新问题。