コード例 #1
0
        /// <summary>
        /// Checks if application is available on mobile device
        /// </summary>
        /// <param name="applicationBundleID">Application BundleID (in platforms application store)</param>
        public static bool IsApplicationInstalled(string applicationBundleID)
        {
            //#if UNITY_EDITOR
            //            return false;
            //#elif UNITY_ANDROID
#if UNITY_ANDROID
            AndroidJavaClass  up             = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ca             = up.GetStatic <AndroidJavaObject>("currentActivity");
            AndroidJavaObject packageManager = ca.Call <AndroidJavaObject>("getPackageManager");
            Debug.Log("Checking for app availability on system.");
            AndroidJavaObject launchIntent = null;
            //if the app is installed, no errors. Else, doesn't get past next line
            try
            {
                launchIntent = packageManager.Call <AndroidJavaObject>("getLaunchIntentForPackage", applicationBundleID);
            }
            catch (Exception ex)
            {
                Debug.Log(string.Format("Error checking app availability: {0}", ex.Message));
            }

            bool result = (launchIntent != null);

            up.Dispose();
            ca.Dispose();
            packageManager.Dispose();
            launchIntent.Dispose();

            Debug.Log(string.Format("Application {0} found: {0}", applicationBundleID, result));
            return(result);
#elif UNITY_IOS
            bool result = false;
            if (ApplicationSchemesMap.ContainsKey(applicationBundleID))
            {
                Debug.Log(string.Format("Direct app request iOS: {0}", iOSApplicationAvailable(ApplicationSchemesMap[applicationBundleID])));
                result = iOSApplicationAvailable(ApplicationSchemesMap[applicationBundleID]);
            }
            else
            {
                result = false;
            }

            Debug.Log(string.Format("Application {0} found: {0}", applicationBundleID, result));
            return(result);
#else
            return(false);
#endif
        }
コード例 #2
0
        /// <summary>
        /// Open application on mobile device, if available
        /// </summary>
        /// <param name="applicationBundleID">Application BundleID (in platforms application store)</param>
        public static void OpenApplication(string applicationBundleID)
        {
            if (IsApplicationInstalled(applicationBundleID))
            {
#if UNITY_ANDROID
                AndroidJavaClass  up             = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject ca             = up.GetStatic <AndroidJavaObject>("currentActivity");
                AndroidJavaObject packageManager = ca.Call <AndroidJavaObject>("getPackageManager");
                Debug.Log("Checking for app availability on system.");
                AndroidJavaObject launchIntent = null;
                //if the app is installed, no errors. Else, doesn't get past next line
                try
                {
                    launchIntent = packageManager.Call <AndroidJavaObject>("getLaunchIntentForPackage", applicationBundleID);
                    ca.Call("startActivity", launchIntent);
                }
                catch (Exception ex)
                {
                    Debug.Log(string.Format("Error checking app availability: {0}", ex.Message));
                }

                up.Dispose();
                ca.Dispose();
                packageManager.Dispose();
                launchIntent.Dispose();
#elif UNITY_IOS
                if (ApplicationSchemesMap.ContainsKey(applicationBundleID))
                {
                    Application.OpenURL(string.Format("{0}://", ApplicationSchemesMap[applicationBundleID]));
                }
                else
                {
                    Debug.Log(string.Format("Error trying to open unavailable application: {0}", applicationBundleID));
                }
#endif
            }
            else
            {
                Debug.Log(string.Format("Error trying to open unavailable application: {0}", applicationBundleID));
            }
        }