1575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick/* 2575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * Copyright (C) 2010 The Android Open Source Project 3575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * 4575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * Licensed under the Apache License, Version 2.0 (the "License"); 5575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * you may not use this file except in compliance with the License. 6575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * You may obtain a copy of the License at 7575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * 8575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * http://www.apache.org/licenses/LICENSE-2.0 9575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * 10575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * Unless required by applicable law or agreed to in writing, software 11575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * distributed under the License is distributed on an "AS IS" BASIS, 12575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * See the License for the specific language governing permissions and 14575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * limitations under the License. 15575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick */ 16575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick 17575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrickpackage com.android.common; 18575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick 19575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrickimport android.content.SharedPreferences; 20575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick 21575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrickimport java.lang.reflect.InvocationTargetException; 22575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrickimport java.lang.reflect.Method; 23575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick 24575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick/** 25575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * Reflection utils to call SharedPreferences$Editor.apply when possible, 26575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick * falling back to commit when apply isn't available. 27575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick */ 28575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrickpublic class SharedPreferencesCompat { 29575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick private static Method sApplyMethod; // final 30575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick static { 31575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick try { 32575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick Class cls = SharedPreferences.Editor.class; 33575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick sApplyMethod = cls.getMethod("apply"); 34575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } catch (NoSuchMethodException unused) { 35575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick sApplyMethod = null; 36575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } 37575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } 38575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick 39575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick public static void apply(SharedPreferences.Editor editor) { 40575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick if (sApplyMethod != null) { 41575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick try { 42575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick sApplyMethod.invoke(editor); 43575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick return; 44575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } catch (InvocationTargetException unused) { 45575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick // fall through 46575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } catch (IllegalAccessException unused) { 47575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick // fall through 48575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } 49575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } 50575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick editor.commit(); 51575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick } 52575e19825099eb83d1d452ffce93314aa66432edBrad Fitzpatrick} 53