unity3d 判断是否安装指定app android and ios

调用

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;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值