2013-12-11 18 views
9

Cố gắng chỉ chọn một hình ảnh cụ thể từ thẻ SD. Tôi có thể chọn hình ảnh từ thư viện và ứng dụng Ảnh trong kikat.But không nhận được đường dẫn tập tin khi tôi chọn hình ảnh từ recents đang nhận được đường dẫn tập tin là null.[Android - Kitkat] Nhận/chọn hình ảnh từ ứng dụng Thư viện được tích hợp sẵn của Android theo lập trình

Tôi đã thử https://stackoverflow.com/a/2636538/1140321.

+0

Bạn có thực sự cần ImagePath? Bạn đang tải lên hình ảnh? hoặc chỉ muốn hiển thị nó trong imageview? –

+0

tôi chỉ muốn hiển thị nó ở chế độ xem hình ảnh .. – Meher

+0

Bạn có thể đăng mã của mình vì nó sẽ dễ dàng hơn cho tôi để trả lời –

Trả lời

33

này làm việc cho 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(); 
} 

} 

Bạn cần phải thêm phép

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

+0

Mã không giống nhau ... hãy kiểm tra xem điều kiện khác có kiểm tra kitkat không: P –

+0

bạn đã thử mã chưa? nó có hiệu quả với bạn không? –

+0

@SunilMishra làm thế nào để có được đường dẫn hình ảnh từ này trong kit-kat ?? –

Các vấn đề liên quan