/// <summary>
        /// get string from native code.
        /// </summary>
        /// <returns>value</returns>
        /// <param name="key">key</param>
        public static string GetString(string key)
        {
            UniKeyModuleString data;

            #if UNITY_IOS && !UNITY_EDITOR
            data = getString(key);
            #elif UNITY_ANDROID && !UNITY_EDITOR
            using (var module = new AndroidJavaClass(PackageName))
                using (var obj = module.CallStatic <AndroidJavaObject>("getString", key)) {
                    data           = new UniKeyModuleString();
                    data.value     = obj.Get <string>("value");
                    data.errorCode = obj.Get <int>("errorCode");
                }
            #else
            data = UniKeyModuleOther.GetString(key);
            #endif

            switch ((ErrorCode)data.errorCode)
            {
            case ErrorCode.None: return(data.value);

            case ErrorCode.ItemNotFound: return(null);
            }
            throw new UniKeyModuleException((ErrorCode)data.errorCode);
        }
        /// <summary>
        /// set string to native code.
        /// </summary>
        /// <param name="key">key</param>
        /// <param name="value">value</param>
        public static void SetString(string key, string value)
        {
            var code = ErrorCode.None;

            #if UNITY_IOS && !UNITY_EDITOR
            code = (ErrorCode)setString(key, value);
            #elif UNITY_ANDROID && !UNITY_EDITOR
            using (var module = new AndroidJavaClass(PackageName)) {
                code = (ErrorCode)module.CallStatic <int>("setString", key, value);
            }
            #else
            code = (ErrorCode)UniKeyModuleOther.SetString(key, value);
            #endif

            if (code != ErrorCode.None)
            {
                throw new UniKeyModuleException(code);
            }
        }
        /// <summary>
        /// remove all data in data store.
        /// </summary>
        public static void DeleteAll()
        {
            var code = ErrorCode.None;

            #if UNITY_IOS && !UNITY_EDITOR
            code = (ErrorCode)deleteAll();
            #elif UNITY_ANDROID && !UNITY_EDITOR
            using (var module = new AndroidJavaClass(PackageName)) {
                code = (ErrorCode)module.CallStatic <int>("deleteAll");
            }
            #else
            code = (ErrorCode)UniKeyModuleOther.DeleteAll();
            #endif

            switch (code)
            {
            case ErrorCode.None: return;
            }
            throw new UniKeyModuleException(code);
        }