public static void SetDateTime(Context context, String name, String key, DateTime value)
        {
            Android.Net.Uri URI = PreferenceProvider.BuildUri(name, key, PreferenceProvider.PREF_LONG);
            ContentValues   cv  = new ContentValues();

            cv.Put(PreferenceProvider.PREF_KEY, key);
            cv.Put(PreferenceProvider.PREF_VALUE, value.ToUniversalTime().Ticks);
            context.ContentResolver.Update(URI, cv, null, null);
        }
        public static void SetLong(Context context, String name, String key, long value)
        {
            Android.Net.Uri URI = PreferenceProvider.BuildUri(name, key, PreferenceProvider.PREF_LONG);
            ContentValues   cv  = new ContentValues();

            cv.Put(PreferenceProvider.PREF_KEY, key);
            cv.Put(PreferenceProvider.PREF_VALUE, value);
            context.ContentResolver.Update(URI, cv, null, null);
        }
        public static void SetBoolean(Context context, String name, String key, bool value)
        {
            Android.Net.Uri URI = PreferenceProvider.BuildUri(name, key, PreferenceProvider.PREF_BOOLEAN);
            ContentValues   cv  = new ContentValues();

            cv.Put(PreferenceProvider.PREF_KEY, key);
            cv.Put(PreferenceProvider.PREF_VALUE, value ? 1 : 0);
            context.ContentResolver.Update(URI, cv, null, null);
        }
        public static String GetString(Context context, String name, String key, String defaultValue)
        {
            Android.Net.Uri URI    = PreferenceProvider.BuildUri(name, key, PreferenceProvider.PREF_STRING);
            String          value  = defaultValue;
            ICursor         cursor = context.ContentResolver.Query(URI, null, null, null, null);

            if (cursor != null && cursor.MoveToFirst())
            {
                value = cursor.GetString(cursor.GetColumnIndex(PreferenceProvider.PREF_VALUE));
            }
            IOUtils.CloseQuietly(cursor);
            return(value);
        }
        public static DateTime GetDateTime(Context context, String name, String key, DateTime defaultValue)
        {
            Android.Net.Uri URI    = PreferenceProvider.BuildUri(name, key, PreferenceProvider.PREF_LONG);
            DateTime        value  = defaultValue;
            ICursor         cursor = context.ContentResolver.Query(URI, null, null, null, null);

            if (cursor != null && cursor.MoveToFirst())
            {
                var ticks = cursor.GetLong(cursor.GetColumnIndex(PreferenceProvider.PREF_VALUE));
                value = new DateTime(ticks, DateTimeKind.Utc);
            }
            IOUtils.CloseQuietly(cursor);
            return(value);
        }
        public static bool GetBoolean(Context context, String name, String key, bool defaultValue)
        {
            Android.Net.Uri URI    = PreferenceProvider.BuildUri(name, key, PreferenceProvider.PREF_BOOLEAN);
            int             value  = defaultValue ? 1 : 0;
            ICursor         cursor = context.ContentResolver.Query(URI, null, null, null, null);

            if (cursor != null && cursor.MoveToFirst())
            {
                var cursorValue = cursor.GetString(cursor.GetColumnIndex(PreferenceProvider.PREF_VALUE));
                value = cursorValue == "true" ? 1 : 0;
            }
            IOUtils.CloseQuietly(cursor);
            return(value == 1);
        }
        public static bool HasKey <T>(Context context, string key, string name)
        {
            var type = typeof(T);

            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>))
            {
                type = Nullable.GetUnderlyingType(type);
            }

            int pref;

            if (type == typeof(bool))
            {
                pref = PreferenceProvider.PREF_BOOLEAN;
            }
            else if (type == typeof(string))
            {
                pref = PreferenceProvider.PREF_STRING;
            }
            else if (type == typeof(int))
            {
                pref = PreferenceProvider.PREF_INT;
            }
            else if (type == typeof(long))
            {
                pref = PreferenceProvider.PREF_LONG;
            }
            else if (type == typeof(DateTime))
            {
                pref = PreferenceProvider.PREF_DATETIME;
            }
            else
            {
                throw new NotImplementedException($"There is no PREF for the type {type.Name}");
            }

            Android.Net.Uri URI = PreferenceProvider.BuildUri(name, key, pref);
            return(context.ContentResolver.Query(URI, null, null, null, null) != null);
        }
 public static void Remove(Context context, String name, String key)
 {
     Android.Net.Uri URI = PreferenceProvider.BuildUri(name, key, PreferenceProvider.PREF_STRING);
     context.ContentResolver.Delete(URI, null, null);
 }