title: Storing and Retrieving Uri from sqlite
body: <p>I’m a newbie developer and I am currently working on an app in which part of the functionality allows users to capture an image, store it in the app’s file system, and store its reference in a column of a SQLite database.  The user will then be able to view these images in a gridview based on whatever criteria it is associated with in the database (e.g. only displaying images that are a certain colour).</p>
  
  <p>At first I actually “grabbed” the captured image’s file name and stored that in the database, using this code: </p>
  
  <pre><code>//Initializing Variables:
  protected ImageButton _button;
  protected ImageView _image;
  protected TextView _field;
  protected String _path;
  protected String name;
  protected boolean _taken;
  protected static final String PHOTO_TAKEN = "photo_taken";
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
      super.onCreate(savedInstanceState);
      setContentView(R.layout.newitemui);
  
      //Creating the "item_images" directory and File:
      File dir = new File("sdcard/item_images"); 
      try
      {
          //Create new directory:
          if(dir.mkdir()) 
          {
              System.out.println("Directory created");
          } 
          else 
          {
              System.out.println("Directory is not created");
          }
      }
      catch(Exception e)
      {
          e.printStackTrace();
      }
  
      //Setting the current time stamp for image name:
      String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
  
      _image = ( ImageView ) findViewById( R.id.image );
      _field = ( TextView ) findViewById( R.id.field );
      _button = ( ImageButton ) findViewById( R.id.button );
      _button.setOnClickListener( new ButtonClickHandler() );
      name = "IMG_" + timeStamp + ".png";
      _path = Environment.getExternalStorageDirectory() + File.separator + "/item_images" + "/" + name;
  
      Toast toast = Toast.makeText(NewItemUI.this,"Touch Camera to Capture Image", Toast.LENGTH_LONG);
      toast.show();
      toast.setGravity(Gravity.DISPLAY_CLIP_HORIZONTAL|Gravity.BOTTOM, 0, 200);
  }
  
   public class ButtonClickHandler implements View.OnClickListener 
      {
          public void onClick( View view ){
              startCameraActivity();
          }
      }
  
   protected void startCameraActivity()
      {
          File file = new File( _path );
          Uri outputFileUri = Uri.fromFile( file );
  
          Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
          intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
  
          startActivityForResult( intent, 0 ); 
      }
  
  
   @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) 
      {               
          switch( resultCode )
          {
              //If user did not take photo, return to the original screen with no result:
              case 0:
                  break;
  
              //If user took a photo, insert the image name into database and return to the original screen with the captured image displayed:
              case -1:
  
                      AppDatabase appdb = new AppDatabase(this);
                      SQLiteDatabase sql = appdb.getWritableDatabase();
                      sql.execSQL("INSERT INTO tblClothingItem (imagePath) VALUES ('"+name+"');");
                      sql.close();
                      appdb.close();
  
                      onPhotoTaken();
                      break;  
          }
  
      }
  </code></pre>
  
  <p>However I realized that the filename stored is just an ordinary string in the context of the app and does not actually point to any one image stored in the file system.</p>
  
  <p>What I would like to know is:</p>
  
  <ol>
  <li>How I can <strong>store the Uri of an image</strong> in my SQLite database as it
  is captured</li>
  <li>How would I go about retrieving thee images based on their stored
  Uri to display in a gridview.</li>
  </ol>
  
  <p>Any suggestions, sample code, feedback is welcomed. </p>