Ottenere il path di file di image su Android

Ho un'applicazione che può fare immagini e caricarle. Il caricamento richiede il path del file della foto, ma non posso ottenerlo.

Questo è il mio codice:

  • Chromecast Sender v2.7.0 image di lockscreen
  • Aggiunta / rimozione delle voci di lingua nelle "Impostazioni" -> "Seleziona locale" dal telefono Android
  • Installazione di Android sul guasto del dispositivo
  • Come impostare una visualizzazione di text di TypeFace a PagerTabStrip
  • setonitemclicklistener non funziona per gridview
  • Media Session Compat non visualizza i controlli di Lockscreen su Pre-Lollipop
  • public void maakfoto (View v) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri); startActivityForResult(cameraIntent, CAMERA_REQUEST); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(photo); knop.setVisibility(Button.VISIBLE); System.out.println(mImageCaptureUri); } } 

    Mi prega di aiutarmi a get il path del file.

    Grazie

  • Come get informazioni separate sui prezzi e le valuta per un acquisto in-app?
  • Google map v2 Custom Infowindow con due pulsanti cliccabili o ImageView
  • Domande sulla sicurezza e la progettazione di fatturazione in-app
  • Evidenziare per l'elemento selezionato nell'elenco espandibile
  • Errore quando ho cercato di aggiornare la mia applicazione
  • Come eseguire il debug di javascript in webview in android
  • 7 Solutions collect form web for “Ottenere il path di file di image su Android”

    L'invio a Twitter richiede il path effettivo dell'image sul dispositivo da submit nella richiesta di pubblicazione. Stavo trovando molto difficile get il path effettivo e più spesso non avrei ottenuto il path sbagliato.

    Per contrastarlo, una volta che hai un Bitmap , lo uso per get l'URI dall'uso del getImageUri() . Successivamente, utilizzo l'istanza tempUri Uri per get il path effettivo come è sul dispositivo.

    Questo è il codice di produzione e naturalmente testato. 😉

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(photo); knop.setVisibility(Button.VISIBLE); // CALL THIS METHOD TO GET THE URI FROM THE BITMAP Uri tempUri = getImageUri(getApplicationContext(), photo); // CALL THIS METHOD TO GET THE ACTUAL PATH File finalFile = new File(getRealPathFromURI(tempUri)); System.out.println(mImageCaptureUri); } } public Uri getImageUri(Context inContext, Bitmap inImage) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); return Uri.parse(path); } public String getRealPathFromURI(Uri uri) { Cursor cursor = getContentResolver().query(uri, null, null, null, null); cursor.moveToFirst(); int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); return cursor.getString(idx); } 

    Per scattare una foto è necessario determinare un path in cui si desidera che l'image venga salvata e passare come un extra nell'intento, ad esempio:

     private void capture(){ String directoryPath = Environment.getExternalStorageDirectory() + "/" + IMAGE_DIRECTORY + "/"; String filePath = directoryPath+Long.toHexString(System.currentTimeMillis())+".jpg"; File directory = new File(directoryPath); if (!directory.exists()) { directory.mkdirs(); } this.capturePath = filePath; // you will process the image from this path if the capture goes well Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile( new File(filePath) ) ); startActivityForResult(intent, REQUEST_CAPTURE); } 

    Ho copiato la suddetta porzione da un'altra risposta che ho dato.

    Tuttavia, per avvisarti, ci sono molte inconsistenze con il comportmento di cattura delle immagini tra i dispositivi che dovresti cercare.

    Ecco un problema in cui sono accaduto in alcuni dispositivi HTC, in cui salverei la posizione che ho passato e nella posizione predefinita, con conseguente duplicazione delle immagini sul dispositivo: eliminazione di un'image di una galleria dopo la foto della macchina fotografica

    Prova con mImageCaptureUri.getPath(); Di seguito:

     if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { //Get your Image Path String Path=mImageCaptureUri.getPath(); Bitmap photo = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(photo); knop.setVisibility(Button.VISIBLE); System.out.println(mImageCaptureUri); } 

    Lo faccio clic su Button.

     private static final int CAMERA_PIC_REQUEST = 1; private View.OnClickListener OpenCamera=new View.OnClickListener() { @Override public void onClick(View paramView) { // TODO Auto-generated method stub Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); NewSelectedImageURL=null; //outfile where we are thinking of saving it Date date = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); String newPicFile = RecipeName+ df.format(date) + ".png"; String outPath =Environment.getExternalStorageDirectory() + "/myFolderName/"+ newPicFile ; File outFile = new File(outPath); CapturedImageURL=outFile.toString(); Uri outuri = Uri.fromFile(outFile); cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, outuri); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); } }; 

    È ansible get l'URL dell'image catturata di recente dalla variabile CapturedImageURL

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { ////////////////////////////////////// if (requestCode == CAMERA_PIC_REQUEST) { // do something if (resultCode == RESULT_OK) { Uri uri = null; if (data != null) { uri = data.getData(); } if (uri == null && CapturedImageURL != null) { uri = Uri.fromFile(new File(CapturedImageURL)); } File file = new File(CapturedImageURL); if (!file.exists()) { file.mkdir(); sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+Environment.getExternalStorageDirectory()))); } } } 

    utilizzare questa function per get il path dell'image di acquisizione

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { Uri mImageCaptureUri = intent.getData(); Bitmap photo = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(photo); knop.setVisibility(Button.VISIBLE); System.out.println(mImageCaptureUri); //getImgPath(mImageCaptureUri);// it will return the Capture image path } } public String getImgPath(Uri uri) { String[] largeFileProjection = { MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA }; String largeFileSort = MediaStore.Images.ImageColumns._ID + " DESC"; Cursor myCursor = this.managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, largeFileProjection, null, null, largeFileSort); String largeImagePath = ""; try { myCursor.moveToFirst(); largeImagePath = myCursor .getString(myCursor .getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA)); } finally { myCursor.close(); } return largeImagePath; } 

    Primo passo di passaggio semplice

     Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE); 

    E u otterrà un path image su u onActivityResult

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 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 picturePath = cursor.getString(columnIndex); cursor.close(); ImageView imageView = (ImageView) findViewById(R.id.imgView); imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); } } 

    Per get il path di tutte le immagini in android sto usando il seguente codice

     public void allImages() { ContentResolver cr = getContentResolver(); Cursor cursor; Uri allimagessuri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Images.Media._ID + " != 0"; cursor = cr.query(allsongsuri, STAR, selection, null, null); if (cursor != null) { if (cursor.moveToFirst()) { do { String fullpath = cursor.getString(cursor .getColumnIndex(MediaStore.Images.Media.DATA)); Log.i("Image path ", fullpath + ""); } while (cursor.moveToNext()); } cursor.close(); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.