2012-03-06 39 views
12

Tôi đang cố gắng tải hình ảnh bằng thư viện tích hợp sẵn. Nó hoạt động tốt trong trình giả lập và nó chỉ mở bộ sưu tập nhưng trên thiết bị thực, nó cho tôi nhiều lựa chọn một trong số đó là trình quản lý tệp cho phép tôi chọn bất kỳ loại tệp nào ngay cả tập tin apk, tất nhiên là lỗi ứng dụng sau Tôi có mã nàyAndroid chỉ nhận được hình ảnh từ thư viện

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 


    if (resultCode == RESULT_OK) { 


    switch(requestCode){  

     case SELECT_PICTURE: 
       Uri selectedImageUri = data.getData(); 


      break; 
     } 
     } 

}

+0

Gỡ cài đặt trình quản lý tệp, vì đó rõ ràng là một phần rác. Điều đó đang được nói, StackOverflow là cho các câu hỏi lập trình, và đây không phải là một câu hỏi. – CommonsWare

+1

Dường như với tôi như câu hỏi của ông là "Làm cách nào để cho phép người dùng chọn ảnh bằng thư viện với mục đích". – FoamyGuy

Trả lời

24

Cố gắng sử dụng

.... 
    Intent intent = new Intent(Intent.ACTION_PICK); 
    intent.setType("image/*"); 
    startActivityForResult(intent, SELECT_PICTURE); 
.... 
+1

Cảm ơn điều này rất hữu ích – mrl25

+2

Ứng dụng Android 4.4 hình ảnh chứng khoán không tính đến điều này. –

+0

Câu trả lời duy nhất của rigth. Tôi đã tìm kiếm rất nhiều thời gian - lỗi của tôi là thiết lập intent.setAction (Intent.ACTION_GET_CONTENT); Rất nhiều android cung cấp cho tôi sự lựa chọn để chọn từ các ứng dụng như vậy, như ổ google, viber photoes, nhưng tôi không thể phân tích cú pháp uri. Cảm ơn bạn đã trả lời, chắc chắn rằng tất cả các thư viện standart sẽ xử lý đúng cách này (tôi đã kiểm tra trên 4 điện thoại) –

1

Hãy thử sử dụng này cho ý định của bạn:

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 

Nếu bạn đang muốn luôn luôn sử dụng các chứng khoán Gallery Application tôi don' nghĩ rằng bạn cần phải sử dụng Trình chọn Ý định, do đó bạn có thể có thể thay đổi startActivity của bạn như thế này:

startActivityForResult(intent, SELECT_PICTURE); 
5
public void ChoosePicture(View v) { 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, 1); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case 1: 
    { 
     if (resultCode == RESULT_OK) 
     { 
     Uri photoUri = data.getData(); 
     if (photoUri != null) 
     { 
     try { 
       String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(photoUri, filePathColumn, null, null, null); 
       cursor.moveToFirst(); 
       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       String filePath = cursor.getString(columnIndex); 
       cursor.close(); 
       bMap_image = BitmapFactory.decodeFile(filePath); 
       ImageView img = (ImageView) findViewById(R.id.gallery1); 
       img.setImageBitmap(bMap_image); 


    }catch(Exception e) 
     {} 
     } 
    }// resultCode 
    }// case 1 
    }// switch, request code 
}// public void onActivityResult 

MMH, bằng cách nào đó nó đã thay đổi vị trí của "}" cuối cùng của tôi.

Mã này sẽ cho phép bạn chọn hình ảnh từ thư viện và sau đó hiển thị hình ảnh đó trên một lần xem hình ảnh.

Tôi sử dụng mã này trên thiết bị của mình và hoạt động như một nét duyên dáng.

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