java - SharedPreferences का उपयोग करके बाइट सरणी को सहेजना




android bytearray (4)

आप Android.util.Base64 का उपयोग करके साझा किए गए संदर्भों में एक बाइट सरणी को बचा सकते हैं।

बचत के लिए:

String saveThis = Base64.encodeToString(array, Base64.DEFAULT);

लोडिंग के लिए:

byte[] array = Base64.decode(stringFromSharedPrefs, Base64.DEFAULT);

इसलिए मेरे पास एक byte [] array जो मैंने अपने एंड्रॉइड ऐप में बनाया है। जब मैं अपना ऐप शुरू करता हूं तो इसे स्टोर करने के लिए एंड्रॉइड से शेयर्डप्रिफर का उपयोग करना चाहता हूं और इसे फिर से वापस प्राप्त करता हूं। मैं उसे कैसे कर सकता हूँ ?


आप इसे बचाने के लिए प्रयास कर सकते हैं एक String :

सरणी को संग्रहीत करना:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("myByteArray", Arrays.toString(array));

सरणी को पुनः प्राप्त करना:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String stringArray = settings.getString("myByteArray", null);

if (stringArray != null) {
    String[] split = stringArray.substring(1, stringArray.length()-1).split(", ");
    byte[] array = new byte[split.length];
    for (int i = 0; i < split.length; i++) {
      array[i] = Byte.parseByte(split[i]);
    }
}

मैं एरियल यूस्ट के उत्तर को आगे नहीं बढ़ा सका लेकिन यह पूरी तरह से काम कर गया।

अन्य उत्तर (जैसे बेस 64 एनकोडर) मेरे न्यूनतम एपीआई संस्करण के लिए उपलब्ध नहीं थे या मूल मूल्य को संरक्षित नहीं करते थे (जो डेटा को एन्क्रिप्ट / डिक्रिप्ट करने पर समस्याग्रस्त हो सकते हैं)

इसके अतिरिक्त मैं कोटलिन में एक्सटेंशन का उपयोग करने की सलाह देता हूं:

val String.toPreservedByteArray: ByteArray
get() {
    return this.toByteArray(Charsets.ISO_8859_1)
}

val ByteArray.toPreservedString: String
get() {
    return String(this, Charsets.ISO_8859_1)
}

तो आप बस इसे अपने तार पर कहते हैं:

val string = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE).getString("string", "") ?: ""
val byteArray = string.toPreservedByteArray

साझा प्राथमिकता में एक ऐरे को सहेजना:

public static boolean saveArray()
{
    SharedPreferences sp = SharedPreferences.getDefaultSharedPreferences(this);
    SharedPreferences.Editor mEdit1 = sp.edit();
    mEdit1.putInt("Status_size", byteArr.size()); /* byteArr is an array */ 

    for(int i=0;i<byteArr.size();i++)  
    {
        mEdit1.remove("Status_" + i);
        mEdit1.putString("Status_" + i, byteArr.get(i));  
    }

    return mEdit1.commit();     
}

साझा वरीयताएँ से एरियर डेटा लोड हो रहा है:

public static void loadArray(Context mContext)
{  
    Shared Preferences mSharedPreference1 = PreferenceManager.getDefaultSharedPreferences(mContext);
    byteArr.clear();
    int size = mSharedPreference1.getInt("Status_size", 0);  

    for(int i=0;i<size;i++) 
    {
        byteArr.add(mSharedPreference1.getString("Status_" + i, null));
    }
}

उपरोक्त 2 कार्यों को लागू करें और कॉल करें। मुझे उम्मीद है कि उपरोक्त कोड मदद करता है






sharedpreferences