title: How to Save images to ImageView using Shared Preferences
body: <p>I have an activity that opens another activity to get a download pic. The picture comes back to my original activity and rest in an imageView. That's working fine. How do I save the image so when the user comes back later, or kills to app the image is still there. I know I am supposed the use Shared Preferences to get the image path and not save the image itself but I just don't know how do that.</p>
  
  <p>Main Activity </p>
  
  <pre><code>public class MainActivity extends Activity {
  
    private static final int REQUEST_CODE = 1;
    private Bitmap bitmap;
    Button button;
    ImageView imageView;
    String selectedImagePath;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      button=(Button) findViewById(R.id.click);
      imageView=(ImageView) findViewById(R.id.image);
      imageView.setOnLongClickListener(new View.OnLongClickListener() {
          @Override
          public boolean onLongClick(View v) {
              Switch();
              return true;
          }
      });
    }
  
    public void Switch(){
      imageView = (ImageView) findViewById(R.id.image);
      Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
      startActivityForResult(intent, REQUEST_CODE);
    }
  
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      if (requestCode==REQUEST_CODE&amp;&amp;resultCode== Activity.RESULT_OK){
        try {
          Uri selectedImage = data.getData();
          String[] filePathColumn = {MediaStore.Images.Media.DATA};
          Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
          cursor.moveToFirst();
          int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
          String filePath = cursor.getString(columnIndex);
          Log.v("roni", filePath);
          cursor.close();
          if(bitmap != null &amp;&amp; !bitmap.isRecycled())
            {
              bitmap = null;
            }
          bitmap = BitmapFactory.decodeFile(filePath);
          //imageView.setBackgroundResource(0);
          imageView.setImageBitmap(bitmap);
          } catch (Exception e){
            e.printStackTrace();
          }
        }
    }
  
    @Override
    protected void onPause() {
      super.onPause();
       save();
    }
  
    public void save() {
      SharedPreferences sp = getSharedPreferences("AppSharedPref", 1); // Open SharedPreferences with name AppSharedPref
      SharedPreferences.Editor editor = sp.edit();
      editor.putString("ImagePath", selectedImagePath); // Store selectedImagePath with key "ImagePath". This key will be then used to retrieve data.
      editor.commit();
    }
  
    @Override
    protected void onResume() {
      super.onResume();
      restore();
    }
  
    public void restore(){
      SharedPreferences sp = getSharedPreferences("AppSharedPref", 1);
      selectedImagePath = sp.getString("ImagePath", "");
      bitmap = BitmapFactory.decodeFile(selectedImagePath);
      imageView.setImageBitmap(bitmap);
    }
  }
  </code></pre>
  
  <p>ViewActivity</p>
  
  <pre><code>public class ViewActivity extends ActionBarActivity {
  ImageButton imageViews;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_view);
      imageViews = (ImageButton) findViewById(R.id.image);
      Intent intent = getIntent();
      Uri data = intent.getData();
      if (intent.getType().indexOf("image/") != -1)
      {
          imageViews.setImageURI(data);
      }
  }
  </code></pre>