2013-12-11 4 views
9

Versuchen Sie, nur ein bestimmtes Bild von der SD-Karte zu wählen.Ich kann Bilder aus der Galerie und Fotos app in kikat.Aber nicht holen Dateipfad, wenn ich Bild von recents nehme, bekomme Dateipfad als null.[Android - Kitkat] Holen Sie sich ein Bild von Android integrierten Gallery App programmgesteuert

Ich versuchte https://stackoverflow.com/a/2636538/1140321.

+0

Sie wirklich Sie die imagepath brauchen? Laden Sie das Bild hoch? oder möchtest du es nur in der Bildansicht anzeigen? –

+0

ich möchte es nur in einer Bildansicht zeigen .. – Meher

+0

Kannst du deinen Code posten, als wäre es einfacher für mich zu beantworten –

Antwort

33

Dies funktioniert für 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(); 
} 

} 

Sie Erlaubnis hinzufügen müssen

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

+0

Der Code ist nicht gleich ... Überprüfen Sie, ob die if else-Bedingung für kitkat überprüft: P –

+0

haben Sie den Code versucht? Funktioniert es für dich? –

+0

@SunilMishra, wie Bild weg von diesem in Kit-Kat ?? –

Verwandte Themen