1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/* 2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project 3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License"); 5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License. 6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at 7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * http://www.apache.org/licenses/LICENSE-2.0 9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software 11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS, 12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and 14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License. 15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.util; 18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.Factory; 20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/** 22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Thin wrapper to get/set shared prefs values. 23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic abstract class BuglePrefs { 25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Shared preferences name for preferences applicable to the entire app. 27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public static final String SHARED_PREFERENCES_NAME = "bugle"; 29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Shared preferences name for subscription-specific preferences. 32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Note: for all subscription-specific preferences, please prefix the shared preference keys 33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * with "buglesub_", so that Bugle may perform runtime validations on preferences to make sure 34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you don't accidentally write per-subscription settings into the general pref file, and vice 35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * versa. 36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public static final String SHARED_PREFERENCES_PER_SUBSCRIPTION_PREFIX = "buglesub_"; 38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * A placeholder base version for Bugle builds where no shared pref version was defined. 41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public static final int NO_SHARED_PREFERENCES_VERSION = -1; 43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Returns the shared preferences file name to use. 46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Subclasses should override and return the shared preferences file. 47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract String getSharedPreferencesName(); 49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Handles pref version upgrade. 53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract void onUpgrade(final int oldVersion, final int newVersion); 55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Gets the SharedPreferences accessor to the application-wide preferences. 58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public static BuglePrefs getApplicationPrefs() { 60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return Factory.get().getApplicationPrefs(); 61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Gets the SharedPreferences accessor to the subscription-specific preferences. 65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public static BuglePrefs getSubscriptionPrefs(final int subId) { 67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return Factory.get().getSubscriptionPrefs(subId); 68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to look up in shared prefs 72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param defaultValue The default value if value in shared prefs is null or if 73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * NumberFormatException is caught. 74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @return The corresponding value, or the default value. 75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract int getInt(final String key, final int defaultValue); 77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to look up in shared prefs 80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param defaultValue The default value if value in shared prefs is null or if 81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * NumberFormatException is caught. 82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @return The corresponding value, or the default value. 83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract long getLong(final String key, final long defaultValue); 85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to look up in shared prefs 88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param defaultValue The default value if value in shared prefs is null. 89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @return The corresponding value, or the default value. 90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract boolean getBoolean(final String key, final boolean defaultValue); 92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to look up in shared prefs 95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param defaultValue The default value if value in shared prefs is null. 96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @return The corresponding value, or the default value. 97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract String getString(final String key, final String defaultValue); 99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to look up in shared prefs 102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @return The corresponding value, or null if not found. 103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract byte[] getBytes(final String key); 105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to set in shared prefs 108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param value The value to assign to the key 109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract void putInt(final String key, final int value); 111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to set in shared prefs 114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param value The value to assign to the key 115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract void putLong(final String key, final long value); 117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to set in shared prefs 120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param value The value to assign to the key 121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract void putBoolean(final String key, final boolean value); 123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to set in shared prefs 126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param value The value to assign to the key 127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract void putString(final String key, final String value); 129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to set in shared prefs 132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param value The value to assign to the key 133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract void putBytes(final String key, final byte[] value); 135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd /** 137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * @param key The key to remove from shared prefs 138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public abstract void remove(String key); 140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd} 141