2012-05-31 8 views
5

Ich habe eine App, mit der Sie auf einen ImageButton klicken können und Sie dann in die Android-Galerie oder die Kamera bringt. Ich suche nach einer onActivityResult-Methode, die den Bildpfad aus dem angeklickten/aufgenommenen Bild abruft und in einer Zeichenfolge speichert.Wie kann ich den Pfad von einem Bild in der Android-Galerie abrufen?

Kann mir jemand helfen? Hier ist die onClick Methode, die die Galerie/Kamera eröffnet:

private void showImageDialog() { 
    final String [] items = new String [] {"From Camera", "From SD Card"}; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.select_dialog_item,items); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    builder.setTitle("Select Image"); 
    builder.setAdapter(adapter, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
      if (item == 0) { 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       File file = new File(Environment.getExternalStorageDirectory(), 
            "tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg"); 
       mImageCaptureUri = Uri.fromFile(file); 

       try { 
        intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri); 
        intent.putExtra("return-data", true); 

        startActivityForResult(intent, PICK_FROM_CAMERA); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

       dialog.cancel(); 
      } else { 
       Intent intent = new Intent(); 

       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 

       startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE); 
      } 
     } 
    }); 

    final AlertDialog dialog = builder.create(); 
    dialog.show(); 
} 

Antwort

4

Verwenden Sie diesen Code,

((Button) findViewById(R.id.Button01)) 
       .setOnClickListener(new OnClickListener() { 

        public void onClick(View arg0) { 

         // in onCreate or any event where your want the user to 
         // select a file 
         Intent intent = new Intent(); 
         intent.setType("image/*"); 
         intent.setAction(Intent.ACTION_GET_CONTENT); 
         startActivityForResult(Intent.createChooser(intent, 
           "Select Picture"), SELECT_PICTURE); 
        } 
       }); 


public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == RESULT_OK) { 
      if (requestCode == SELECT_PICTURE) { 
       Uri selectedImageUri = data.getData(); 
       selectedImagePath = getPath(selectedImageUri); 

       Log.v("IMAGE PATH====>>>> ",selectedImagePath); 
      } 
     } 
    } 

    public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = managedQuery(uri, projection, null, null, null); 
     int column_index = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 
} 

Der selectedImagePath ist der Pfad des Bildes.

Verwandte Themen