2013-12-11 9 views
9

provare a scegliere una sola immagine particolare dalle card.I SD sono in grado di raccogliere le immagini dalla galleria e foto app in kikat.But non ottenere percorso del file quando seleziono l'immagine da recents sto ottenendo il percorso del file come null.[Android - Kitkat] Get/scegliere un'immagine da Android di built-in Galleria app di programmazione

ho provato https://stackoverflow.com/a/2636538/1140321.

+0

avete veramente bisogno l'ImagePath? Stai caricando l'immagine? o vuoi solo mostrarlo in imageview? –

+0

voglio solo mostrare in una visualizzazione dell'immagine .. – Meher

+0

puoi pubblicare il tuo codice come sarebbe più facile per me rispondere –

risposta

33

Questo funziona per Kitkat

public class BrowsePictureActivity extends Activity{ 

private static final int SELECT_PICTURE = 1; 

private String selectedImagePath; 
private ImageView imageView; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.browsepicture); 
    imageView = (ImageView)findViewById(R.id.imageView1); 

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

       public void onClick(View arg0) { 
        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(); 
      if (Build.VERSION.SDK_INT < 19) { 
       selectedImagePath = getPath(selectedImageUri); 
       Bitmap bitmap = BitmapFactory.decodeFile(selectedImagePath); 
       imageView.setImageBitmap(bitmap); 

      } 
      else { 
       ParcelFileDescriptor parcelFileDescriptor; 
       try { 
        parcelFileDescriptor = getContentResolver().openFileDescriptor(selectedImageUri, "r"); 
        FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); 
        Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor); 
        parcelFileDescriptor.close(); 
        imageView.setImageBitmap(image); 

       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

/** 
* helper to retrieve the path of an image URI 
*/ 
public String getPath(Uri uri) { 
     if(uri == null) { 
      return null; 
     } 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = getContentResolver().query(uri, projection, null, null, null); 
     if(cursor != null){ 
      int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } 
     return uri.getPath(); 
} 

} 

È necessario aggiungere il permesso

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

+0

Il codice non è lo stesso ... controlla per la condizione else if che verifica la presenza di KitKat: P –

+0

Hai provato il codice? sta funzionando per te? –

+0

@SunilMishra come ottenere il percorso dell'immagine da questo in kit-kat ?? –

Problemi correlati