2012-05-30 74 views
-4

我有一個圖像路徑,我想存儲在共享首選項中。如何在android中的共享偏好設置中存儲圖像路徑?

  1. 如何將路徑存儲在共享首選項中?
  2. 如何從共享首選項中檢索圖像路徑?
+4

請,請,只要努力,這是從谷歌第二個結果 - http://developer.android.com/guide/topics/data/data-storage.html –

+2

店像串並獲得它... –

+0

[This](http://developer.android.com/guide/topics/data/data-storage.html#pref)將幫助你。請關注編輯器類 – teoREtik

回答

3

所有你需要做的是,你的圖像轉換成它的Base64編碼字符串表示:

Bitmap realImage = BitmapFactory.decodeStream(stream); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
byte[] b = baos.toByteArray(); 

String encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 
textEncode.setText(encodedImage); 

SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this); 
Editor edit=shre.edit(); 
edit.putString("image_data",encodedImage); 
edit.commit(); 

,然後檢索時,將其轉換回成位圖:

SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this); 
String previouslyEncodedImage = shre.getString("image_data", ""); 

if(!previouslyEncodedImage.equalsIgnoreCase("")){ 
    byte[] b = Base64.decode(previouslyEncodedImage, Base64.DEFAULT); 
    Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length); 
    imageConvertResult.setImageBitmap(bitmap); 
} 

但是,我要告訴你,Base64編碼的支持是最近才列入API8。要定位較低的API版本,您需要先添加它。幸運的是,this傢伙已經有了必要的教程。

此外,我要告訴你,這是一個複雜的過程,並shareprefrence只使用存儲量小,如用戶名和密碼數據,這就是方式,您也可以使用這樣的方法:

店面形象路徑(從SD卡)爲分享喜好像this--

SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this); 
Editor edit=shre.edit(); 
edit.putString("imagepath","/sdcard/imh.jpeg"); 
edit.commit(); 

載入您的圖片路徑,你可以使用這個

final SharedPreferences sharedPreference = getSharedPreferences(
       "pref_key", MODE_PRIVATE); 
     if (sharedPreference.contains("imagepath")) { 
      String mFilePath = sharedPreference.getString(imagepath, 
        null); 
     } 

讓你的路徑後就可以使用方法:

File imgFile = new File(mFilePath); 
if(imgFile.exists()){ 

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); 
    myImage.setImageBitmap(myBitmap); 

} 
+0

還有一個問題:當我檢索圖像路徑時,如何使圖像視圖顯示圖像?我應該如何實現這個目標? – user1420042

+0

檢查更新的答案:如果文件不存在,您可以顯示消息文件不存在! –

0

將路徑存儲爲字符串

Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit(); 
e.putString("your_preference", your_path.toString()); 
e.commit(); 

這也被問了許多時間之前,因此-1

0
final SharedPreferences sPreference = getSharedPreferences(
       "pref_key", MODE_PRIVATE); 
     final Editor spEditor = sPreference.edit(); 
     spEditor.putString("img_path", mFileName); 
     spEditor.commit(); 

上面的代碼是用來保存你的圖像路徑到共享優先。 現在檢索圖片的路徑,使用如下:

final SharedPreferences sharedPreference = getSharedPreferences(
       "pref_key", MODE_PRIVATE); 
     if (sharedPreference.contains("img_path")) { 
      mFileName = sharedPreference.getString(img_path, 
        null); 
     }