내 Android 앱의 Pictures 앱에서 사진에 액세스하십시오
-
23-08-2019 - |
문제
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);
}
제휴하지 않습니다 StackOverflow