1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.messaging.util; 18 19 import android.content.Context; 20 import android.content.SharedPreferences; 21 import android.util.Base64; 22 23 /** 24 * Thin wrapper to get/set shared prefs values. 25 */ 26 public abstract class BuglePrefsImpl extends BuglePrefs { 27 28 private final Context mContext; 29 BuglePrefsImpl(final Context context)30 public BuglePrefsImpl(final Context context) { 31 mContext = context; 32 } 33 34 /** 35 * Validate the prefs key passed in. Subclasses should override this as needed to perform 36 * runtime checks (such as making sure per-subscription settings don't sneak into application- 37 * wide settings). 38 */ validateKey(String key)39 protected void validateKey(String key) { 40 } 41 42 @Override getInt(final String key, final int defaultValue)43 public int getInt(final String key, final int defaultValue) { 44 validateKey(key); 45 final SharedPreferences prefs = mContext.getSharedPreferences( 46 getSharedPreferencesName(), Context.MODE_PRIVATE); 47 return prefs.getInt(key, defaultValue); 48 } 49 50 @Override getLong(final String key, final long defaultValue)51 public long getLong(final String key, final long defaultValue) { 52 validateKey(key); 53 final SharedPreferences prefs = mContext.getSharedPreferences( 54 getSharedPreferencesName(), Context.MODE_PRIVATE); 55 return prefs.getLong(key, defaultValue); 56 } 57 58 @Override getBoolean(final String key, final boolean defaultValue)59 public boolean getBoolean(final String key, final boolean defaultValue) { 60 validateKey(key); 61 final SharedPreferences prefs = mContext.getSharedPreferences( 62 getSharedPreferencesName(), Context.MODE_PRIVATE); 63 return prefs.getBoolean(key, defaultValue); 64 } 65 66 @Override getString(final String key, final String defaultValue)67 public String getString(final String key, final String defaultValue) { 68 validateKey(key); 69 final SharedPreferences prefs = mContext.getSharedPreferences( 70 getSharedPreferencesName(), Context.MODE_PRIVATE); 71 return prefs.getString(key, defaultValue); 72 } 73 74 @Override getBytes(String key)75 public byte[] getBytes(String key) { 76 final String byteValue = getString(key, null); 77 return byteValue == null ? null : Base64.decode(byteValue, Base64.DEFAULT); 78 } 79 80 @Override putInt(final String key, final int value)81 public void putInt(final String key, final int value) { 82 validateKey(key); 83 final SharedPreferences prefs = mContext.getSharedPreferences( 84 getSharedPreferencesName(), Context.MODE_PRIVATE); 85 final SharedPreferences.Editor editor = prefs.edit(); 86 editor.putInt(key, value); 87 editor.apply(); 88 } 89 90 @Override putLong(final String key, final long value)91 public void putLong(final String key, final long value) { 92 validateKey(key); 93 final SharedPreferences prefs = mContext.getSharedPreferences( 94 getSharedPreferencesName(), Context.MODE_PRIVATE); 95 final SharedPreferences.Editor editor = prefs.edit(); 96 editor.putLong(key, value); 97 editor.apply(); 98 } 99 100 @Override putBoolean(final String key, final boolean value)101 public void putBoolean(final String key, final boolean value) { 102 validateKey(key); 103 final SharedPreferences prefs = mContext.getSharedPreferences( 104 getSharedPreferencesName(), Context.MODE_PRIVATE); 105 final SharedPreferences.Editor editor = prefs.edit(); 106 editor.putBoolean(key, value); 107 editor.apply(); 108 } 109 110 @Override putString(final String key, final String value)111 public void putString(final String key, final String value) { 112 validateKey(key); 113 final SharedPreferences prefs = mContext.getSharedPreferences( 114 getSharedPreferencesName(), Context.MODE_PRIVATE); 115 final SharedPreferences.Editor editor = prefs.edit(); 116 editor.putString(key, value); 117 editor.apply(); 118 } 119 120 @Override putBytes(String key, byte[] value)121 public void putBytes(String key, byte[] value) { 122 final String encodedBytes = Base64.encodeToString(value, Base64.DEFAULT); 123 putString(key, encodedBytes); 124 } 125 126 @Override remove(final String key)127 public void remove(final String key) { 128 validateKey(key); 129 final SharedPreferences prefs = mContext.getSharedPreferences( 130 getSharedPreferencesName(), Context.MODE_PRIVATE); 131 final SharedPreferences.Editor editor = prefs.edit(); 132 editor.remove(key); 133 editor.apply(); 134 } 135 } 136