2012-04-26 1 views
0

현재 문제 해결을 돕고 싶습니다. 근본적으로 저는 내부 갤러리에서 몇 가지 이미지를 얻으려고합니다. 이런 식의 전화휴대폰의 메모리에서 이미지 읽기 (SD 없음)

의도 의도 = 새로운 의도();

intent.setType ("image/*");

intent.setAction (Intent.ACTION_GET_CONTENT);

startActivityForResult (Intent.createChooser (의도, "그림 선택"), SELECT_IMAGE);

하지만) (이

우리당 images_uri = data.getData를 사용하여 onActivityResult 방법 URI를 얻을 때

데이터

내가 그것을 어떻게

해결할 수 (이미지가 SD 카드에서 인출 될 때이 일이 발생하지 않습니다) 비어?

또한 2 차 문제로 어떻게 하나 이상의 이미지를 얻을 수 있습니까? 나는 ACTION_SEND_MULTIPLE 사용에 대한 읽을 수 있지만이

내 경우,

답변

0

public static final int GALLERY_CODE = 322; 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), 
      GALLERY_CODE); 


     @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { //Assinging on corresponding import 
    super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == GALLERY_CODE && resultCode == RESULT_OK) { 
     Uri selectedImageUri = data.getData(); 
     selectedImagePath = getPath(selectedImageUri); 
     try { 
      //add logic for coping file 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 

    } 

    public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 
+0

나는 지금 편집 중입니다. –

+0

아니요. 나는 이미이 방법으로 문제에 직면 해 있습니다 ... 사실은 "Uri selectedImageUri = data.getData();"라는 줄에 도착하면 사실입니다. 당신이 얻는 데이터가 비어 있기 때문에 얻는 URI는 비어 있습니다 ... – kioli

+0

사진을 선택하기 위해 기본 갤러리보기를 얻으면? \ –

0

음을 시도 사전에 감사합니다 ... 이미지를 가져올 수있는 곳에서 장소 대신 방법을 보내는 선택을 엽니 다 그것은 실제로 잘못된 캐시 목록이었습니다 (갤러리는 실제로 거기에 없었던 사진을 보여 주었기 때문에 내가 선택한 경우 실제 URI는 없음으로 판명되었습니다).

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 

가 데이터를 갱신해야하는 갤러리를 말할 것이다 : 당신이 ACTION_GET_CONTENT 의도를 요청하기 전에

,이 명령을 추가하는 것이 좋습니다. 이렇게하는 경우 스레드에 잠을 자도록주의하십시오 (예 :

Thread.sleep(1000); 

). 이렇게하면 새로 고침 작업을 실제로 열기 전에 완료 할 수 있습니다. 최소한 내 전화로는 갤러리 앱의 간단한 플래시가 차단되었습니다.