1ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani/* 2443c360d0afdbab091994244f045f4756feaf2b4Jean-Baptiste Queru * Copyright (C) 2008 The Android Open Source Project 345239029ceb876462e0d3f654c6b24ac9a9ed8afKen Wakasa * 48aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 58aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * you may not use this file except in compliance with the License. 68aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * You may obtain a copy of the License at 745239029ceb876462e0d3f654c6b24ac9a9ed8afKen Wakasa * 88aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 945239029ceb876462e0d3f654c6b24ac9a9ed8afKen Wakasa * 10ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani * Unless required by applicable law or agreed to in writing, software 118aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 128aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * See the License for the specific language governing permissions and 148aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * limitations under the License. 15ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani */ 16ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani 17ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasanipackage com.android.inputmethod.latin; 18ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani 19d079b98ec459183e7c5913ee55bf413c3505367aAmith Yamasaniimport android.app.backup.BackupAgentHelper; 201e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport android.app.backup.BackupDataInput; 21d212c30e6fd3b5a6cbac9cfb1c70c746507f9bfdChristopher Tateimport android.app.backup.SharedPreferencesBackupHelper; 221e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport android.content.SharedPreferences; 231e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport android.os.ParcelFileDescriptor; 241e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha 251e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport com.android.inputmethod.latin.settings.LocalSettingsConstants; 261e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha 271e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport java.io.IOException; 28ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani 29ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani/** 301e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha * Backup/restore agent for LatinIME. 311e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha * Currently it backs up the default shared preferences. 32ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani */ 33a28a05e971cc242b338331a3b78276fa95188d19Tadashi G. Takaokapublic final class BackupAgent extends BackupAgentHelper { 341e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha private static final String PREF_SUFFIX = "_preferences"; 351e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha 36525141a402ac9a3fb3495cb069ad25b9ba1fc970satok @Override 37ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani public void onCreate() { 38ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani addHelper("shared_pref", new SharedPreferencesBackupHelper(this, 391e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha getPackageName() + PREF_SUFFIX)); 401e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha } 411e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha 421e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha @Override 431e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) 441e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha throws IOException { 451e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha // Let the restore operation go through 461e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha super.onRestore(data, appVersionCode, newState); 471e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha 481e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha // Remove the preferences that we don't want restored. 491e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha final SharedPreferences.Editor prefEditor = getSharedPreferences( 501e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha getPackageName() + PREF_SUFFIX, MODE_PRIVATE).edit(); 5106a438d3a589b926215ee89c0df82aef62c960a4Sandeep Siddhartha for (final String key : LocalSettingsConstants.PREFS_TO_SKIP_RESTORING) { 521e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha prefEditor.remove(key); 531e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha } 541e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha // Flush the changes to disk. 551e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha prefEditor.commit(); 56ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani } 57ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani} 58