private string AndroidGetRegion()
    {
        if (SwrveHelper.IsOnDevice())
        {
            try {
                using (AndroidJavaClass localeJavaClass = new AndroidJavaClass("java.util.Locale")) {
                    AndroidJavaObject defaultLocale = localeJavaClass.CallStatic <AndroidJavaObject>("getDefault");
                    return(defaultLocale.Call <string>("getCountry"));
                }
            } catch (Exception exp) {
                SwrveLog.LogWarning("Couldn't get the device region, make sure you are running on an Android device: " + exp.ToString());
            }
        }

        return(null);
    }
 private string AndroidGetAndroidId()
 {
     if (SwrveHelper.IsOnDevice() && (_androidId == null))
     {
         try {
             using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass(UnityPlayerName)) {
                 AndroidJavaObject context         = unityPlayerClass.GetStatic <AndroidJavaObject>(UnityCurrentActivityName);
                 AndroidJavaObject contentResolver = context.Call <AndroidJavaObject> ("getContentResolver");
                 AndroidJavaClass  settingsSecure  = new AndroidJavaClass("android.provider.Settings$Secure");
                 _androidId = settingsSecure.CallStatic <string> ("getString", contentResolver, "android_id");
             }
         } catch (Exception exp) {
             SwrveLog.LogWarning("Couldn't get the \"android_id\" resource, make sure you are running on an Android device: " + exp.ToString());
         }
     }
     return(_androidId);
 }
    private void startNativeLocation()
    {
        if (SwrveHelper.IsOnDevice())
        {
            try {
                AndroidGetBridge();
                AndroidJavaClass swrvePlotClass = new AndroidJavaClass(SwrveAndroidPlotName);

                using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass(UnityPlayerName)) {
                    AndroidJavaObject context = unityPlayerClass.GetStatic <AndroidJavaObject>(UnityCurrentActivityName);
                    swrvePlotClass.CallStatic(SwrvePlotOnCreateName, context);
                }
                startedPlot = true;
            } catch (Exception exp) {
                SwrveLog.LogWarning("Couldn't StartPlot from Android: " + exp.ToString());
            }
        }
    }
    private string AndroidGetAppVersion()
    {
        if (SwrveHelper.IsOnDevice())
        {
            try {
                using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass(UnityPlayerName)) {
                    AndroidJavaObject context     = unityPlayerClass.GetStatic <AndroidJavaObject> (UnityCurrentActivityName);
                    string            packageName = context.Call <string> ("getPackageName");
                    string            versionName = context.Call <AndroidJavaObject> ("getPackageManager")
                                                    .Call <AndroidJavaObject> ("getPackageInfo", packageName, 0).Get <string> ("versionName");
                    return(versionName);
                }
            } catch (Exception exp) {
                SwrveLog.LogWarning("Couldn't get the device app version, make sure you are running on an Android device: " + exp.ToString());
            }
        }

        return(null);
    }
    private void RequestGooglePlayAdvertisingId(MonoBehaviour container)
    {
        if (SwrveHelper.IsOnDevice())
        {
            try {
                this.googlePlayAdvertisingId = storage.Load(GoogleAdvertisingIdSave);
                using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass(UnityPlayerName)) {
                    string jniPluginClassName = SwrveAndroidPushPluginPackageName.Replace(".", "/");

                    if (AndroidJNI.FindClass(jniPluginClassName).ToInt32() != 0)
                    {
                        androidPlugin = new AndroidJavaClass(SwrveAndroidPushPluginPackageName);
                        if (androidPlugin != null)
                        {
                            androidPlugin.CallStatic <bool>("requestAdvertisingId", container.name);
                        }
                    }
                }
            } catch (Exception exp) {
                SwrveLog.LogError("Could not retrieve the device Registration Id: " + exp.ToString());
            }
        }
    }