调用
IsInstallApp("jp.naver.line.android","line://")
IsInstallApp("com.whatsapp","whatsapp://")
C#
static Dictionary<string, bool> IsInstallAppTable = new Dictionary<string, bool>();
public static bool IsInstallApp(string packageAndroidName, string packageIOSName)
{
if (IsInstallAppTable.ContainsKey(packageAndroidName) || IsInstallAppTable.ContainsKey(packageIOSName))
{
#if UNITY_ANDROID && !UNITY_EDITOR
return IsInstallAppTable[packageAndroidName];
#elif (UNITY_IOS || UNITY_IPHONE) && !UNITY_EDITOR
return IsInstallAppTable[packageIOSName];
#elif !UNITY_IOS && !UNITY_IPHONE && UNITY_EDITOR
return true;
#endif
}
else
{
#if UNITY_ANDROID && !UNITY_EDITOR
try
{
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
using (AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
using (AndroidJavaObject packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager"))
{
AndroidJavaObject launchIntent = null;
try
{
launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageAndroidName);
}
catch (System.Exception ex){}
if (launchIntent == null){
IsInstallAppTable.Add(packageAndroidName,false);
return false;
}
else{
IsInstallAppTable.Add(packageAndroidName,true);
return true;
}
}
}
catch (System.Exception ex)
{
}
return false;
#elif (UNITY_IOS || UNITY_IPHONE) && !UNITY_EDITOR
bool isIos = _IOS_IsInstallApp(packageIOSName);
IsInstallAppTable.Add(packageIOSName, isIos);
return isIos;
#elif !UNITY_IOS && !UNITY_IPHONE && UNITY_EDITOR
return true;
#endif
}
return false;
}
IOS
bool _IOS_IsInstallApp(const char *url)
{
if (url == NULL) {
return false;
}
NSURL *nsUrl = [NSURL URLWithString:[NSString stringWithUTF8String:url]];
if ([[UIApplication sharedApplication] canOpenURL:nsUrl]) {
return true;
}
return false;
}