Android SharedPreferences 自定義目錄到sd卡中

/**
     * 用反射生成 SharedPreferences
     * @param context
     * @param dir
     * @param fileName 文件名,不需要 '.xml' 后綴
     * @return
     */
private static SharedPreferences getMySharedPreferences(Context context,String dir,String fileName) {
        try {
            // 獲取 ContextWrapper對象中的mBase變量。該變量保存了 ContextImpl 對象
            Field field_mBase = ContextWrapper.class.getDeclaredField("mBase");
            field_mBase.setAccessible(true);
            // 獲取 mBase變量
            Object obj_mBase = field_mBase.get(context);
            // 獲取 ContextImpl。mPreferencesDir變量,該變量保存了數(shù)據(jù)文件的保存路徑
            Field field_mPreferencesDir = obj_mBase.getClass().getDeclaredField("mPreferencesDir");
            field_mPreferencesDir.setAccessible(true);
            // 創(chuàng)建自定義路徑
//            String FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Android";
            File file = new File(dir);
            // 修改mPreferencesDir變量的值
            field_mPreferencesDir.set(obj_mBase,file);
            // 返回修改路徑以后的 SharedPreferences :%FILE_PATH%/%fileName%.xml
            Log.e(TAG,"getMySharedPreferences filep="+file.getAbsolutePath()+"| fileName="+fileName);
            return context.getSharedPreferences(fileName,Activity.MODE_PRIVATE);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        Log.e(TAG,"getMySharedPreferences end filename="+fileName);
        // 返回默認路徑下的 SharedPreferences : /data/data/%package_name%/shared_prefs/%fileName%.xml
        return context.getSharedPreferences(fileName,Context.MODE_PRIVATE);
    }
//通過putValue() 方法保存到系統(tǒng)原來的Sp 中

SharedPreferences saveInfoNew = getMySharedPreferences(mContext,dir,fileName);
        for (Map.Entry<String, ?> entry : saveInfoNew.getAll().entrySet()) {
            putValue(entry.getKey(),entry.getValue());
        }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容