AnsweredAssumed Answered

LicenseStatus of LicenseInfo readed fron JSON string is always expired

Question asked by ibespalov on Nov 28, 2017
Latest reply on Dec 3, 2017 by ibespalov

Hi all.

Each time application starts, we set license. Each time created from JSON string license is expired. It's offline application. We need to set license without internet connection, without asking each time from portal. How to?

private void setupEsriLicense() {
    try {
        appSettings = getSharedPreferences(Global.SETTINGS_FILE, MODE_PRIVATE);
        boolean getFromPortal = true;
        if (appSettings != null && appSettings.contains(Global.LICENSE_TAG)) {
            String licJson = appSettings.getString(Global.LICENSE_TAG, null);
            LicenseInfo licenseInfo = new LicenseInfo(licJson);
            LicenseResult licenseResult = ArcGISRuntimeEnvironment.setLicense(licenseInfo);
            LicenseStatus licenseStatus = licenseResult.getLicenseStatus();
            // licenseStatus is always EXPIRED
            if (licenseStatus == LicenseStatus.VALID) {
                getFromPortal = false;
            }
        }

        if (getFromPortal) {
            UserCredential credential = new UserCredential("username", "passwd");

            final Portal portal = new Portal("https://companyname.maps.arcgis.com");
            portal.setCredential(credential);

            portal.loadAsync();
            portal.addDoneLoadingListener(new Runnable() {
                @Override
                public void run() {
                    if (portal.getLoadStatus() == LoadStatus.LOADED) {
                        LicenseInfo licenseInfo = portal.getPortalInfo().getLicenseInfo();

                        LicenseResult licenseResult = ArcGISRuntimeEnvironment.setLicense(licenseInfo);
                        LicenseStatus licenseStatus = licenseResult.getLicenseStatus();
                        if (licenseStatus == LicenseStatus.VALID) { // always VALID
                            SharedPreferences.Editor editor = appSettings.edit();
                            editor.putString(Global.LICENSE_TAG, licenseInfo.toJson());
                            editor.commit();
                        }

                        //TODO: remove from release
                        License runtimeLicense = ArcGISRuntimeEnvironment.getLicense();
                        Calendar cal = runtimeLicense.getExpiry(); // always +30 days
                        LicenseStatus ls = runtimeLicense.getLicenseStatus(); // always VALID
                        LicenseLevel ll = runtimeLicense.getLicenseLevel(); // always BASIC
                        LicenseType lt = runtimeLicense.getLicenseType(); // always NAMED_USER
                    }
                }
            });
        }
    } catch (Exception ex) {
        Log.d(TAG, "setupEsriLicense", ex);
    }
}

Thanks for your ansewers.
Ivan

Outcomes