문제

iPhone에 UIIMAGEPICKERCONTROLLER가있는 것처럼 사용자가 장치에 저장된 사진에 액세스 할 수 있도록 Android SDK에서 비슷한 컨트롤이 있습니까?

감사.

도움이 되었습니까?

해결책

당신이 사용할 수있는startActivityForResult, 완료하려는 조치와 작업을 수행 할 데이터 소스를 설명하는 의도를 전달합니다.

운 좋게도 Android는 물건을 선택하는 행동을 포함합니다. Intent.ACTION__PICK 및 그림이 포함 된 데이터 소스 :android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI 로컬 장치의 이미지 또는android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI SD 카드의 이미지 용.

부르다 startActivityForResult 픽 동작과 사용자가 다음과 같이 선택하도록 원하는 이미지를 전달합니다.

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

그런 다음 무시하십시오 onActivityResult 선택한 사용자를 듣습니다.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == SELECT_IMAGE)
    if (resultCode == Activity.RESULT_OK) {
      Uri selectedImage = data.getData();
      // TODO Do something with the select image URI
    } 
}

이미지 URI가 있으면 이미지에 액세스하고 이미지에 필요한 모든 것을 수행 할 수 있습니다.

다른 팁

당신은 또한 할 수 있습니다 :

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

이것은 모든 Storages에서 이미지를 선택합니다.

Reto가 제공 한 답변에 대한 업데이트. 이미지를 확장하기 위해이 작업을 수행 할 수 있습니다.

private String getPath(Uri uri) {
String[]  data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top