简体   繁体   中英

Can't import SharedPreferences

After replacement file of SharedPreferences I can't to load new SharedPreferences file. It's work after reinstall application. After restarting the application, nothing changes.

This is Import/Export Class:

public class Prefs {
    private String PrefsDir = "/data/%packagename%/shared_prefs/";
    private String ExportDir = "/";

    private SharedPreferences _sharedPrefs;
    private SharedPreferences.Editor _prefsEditor;
    private Context context;

    Prefs(Context context, String form) {
        this.ExportDir = Environment.getExternalStorageDirectory().getPath() + ExportDir;
        this.PrefsDir = Environment.getDataDirectory().getPath() + PrefsDir;
        _sharedPrefs = context.getSharedPreferences(form, Activity.MODE_PRIVATE);
        _prefsEditor = _sharedPrefs.edit();
    }

    private boolean copyfile(String srFile, String dtFile){
        Popup.log("srFile = "+srFile);
        Popup.log("dtFile = "+dtFile);
        try{
            File f1 = new File(srFile);
            File f2 = new File(dtFile);
            InputStream in = new FileInputStream(f1);
            OutputStream out = new FileOutputStream(f2);

            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0){
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
        } catch(FileNotFoundException ex) {
            Popup.popup(context, "File not found");
            Popup.log(ex.getMessage());
            return false;
        } catch(IOException e) {
            Popup.popup(context, "IO Error");
            return false;
        }
        return true;
    }

    boolean Export(String form) {
        return copyfile(PrefsDir+form+".xml", ExportDir+form+".xml");
    }

    boolean Import(String form) {
        return copyfile(ExportDir+form+".xml", PrefsDir+form+".xml");
    }
}

I'm sorry for my english

The first part of my implementation consists of declarations that define the keys used to retrieve the Shared Preferences and of course the variables that they CAN be stored into. The first routine is to initialize the Shared Preferences (in order to load the shared preferences, u need to have values in the code to save so u need some code to initialize these values in the code). The second routine is to save the Shared Preferences. The third routine is to load the Shared Preferences.

This is the key definition part

private SharedPreferences sharedPreferences;
public final static String MARV_INIT = "MARV_INIT";
public final static String MARV_LAT = "MARV_LATITUDE";
public final static String MARV_LON = "MARV_LONGITUDE";
public final static String MARV_ZOOM = "MARV_ZOOM";
public final static String MARV_PDFL = "MARV_PDFL";
public final static String MARV_PRON = "MARV_PRON";
public final static String MARV_LTRD = "MARV_LTRD";

And here are the 3 routines.

// Shared Preferences and other data loading routines for this activity
private void initSharedPreferences() {
    Log.i(TAG, "Initializing shared preferences ...");
    Editor editor = sharedPreferences.edit();

    editor.putInt(MARV_INIT, 1);
    editor.putString(MARV_LAT, ((Double) SG_LATITUDE).toString());
    editor.putString(MARV_LON, ((Double) SG_LONGITUDE).toString());
    editor.putFloat(MARV_ZOOM, (float) DEFAULT_ZOOM);
    editor.putString(MARV_PDFL, getString(R.string.default_poi_list));
    editor.putBoolean(MARV_PRON, true);
    editor.putFloat(MARV_LTRD, (float) LocationAlertService.DEFAULT_RADIUS);

    editor.commit();
}

private void saveSharedPreferences() {

    // Update global variables first
    updateCameraProperties();

    // Now save global variables into shared preferences
    Editor editor = sharedPreferences.edit();

    editor.putString(MARV_LAT,
            ((Double) lastCameraPosition.latitude).toString());
    editor.putString(MARV_LON,
            ((Double) lastCameraPosition.longitude).toString());
    editor.putFloat(MARV_ZOOM, lastCameraZoom);
    editor.putString(MARV_PDFL, poiDocFileListUrl);
    editor.putBoolean(MARV_PRON, proximityAlertsOn);
    editor.putFloat(MARV_LTRD, lastRadiusUsed);

    editor.commit();
}

private void loadSharedPreferences() {

    lastCameraPosition = new LatLng(Double.parseDouble(sharedPreferences
            .getString(MARV_LAT, ((Double) SG_LATITUDE).toString())),
            Double.parseDouble(sharedPreferences.getString(MARV_LON,
                    ((Double) SG_LONGITUDE).toString())));
    lastCameraZoom = sharedPreferences.getFloat(MARV_ZOOM, DEFAULT_ZOOM);
    poiDocFileListUrl = sharedPreferences.getString(MARV_PDFL,
            getString(R.string.default_poi_list));
    proximityAlertsOn = sharedPreferences.getBoolean(MARV_PRON, true);
    lastRadiusUsed = sharedPreferences.getFloat(MARV_LTRD, LocationAlertService.DEFAULT_RADIUS);            
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM