Google+ 동기화 사진의 폴더 중 하나에서 갤러리 앱의 이미지를 가져 오려고합니다. 이미지를 선택한 후 Uri가 올바르게 다시 전달됩니다. 그러나 저장 장치에서 해당 이미지의 실제 경로를 가져 와서 사용할 수 있도록하면 충돌이 발생합니다. 문제는 특히 picasa 콘텐츠 제공 업체에 있는 것 같습니다 .
Nexus S, Nexus 7 및 기타 기기에서도 테스트되었습니다.
E / AndroidRuntime (14572) : java.lang.RuntimeException : 결과 전달 실패 ResultInfo {who = null, request = 1, result = -1, data = Intent {dat = content : //com.google.android.gallery3d.provider / picasa / item / 5427003652908228690}}
여기서 dat 필드는 Uri를 올바르게 전달하는 것처럼 보이지만 이미지 위치를 가져 오려고하면 다음 오류와 함께 충돌이 발생합니다.
W / GalleryProvider (14381) : 지원되지 않는 열 : _data
Picasa 앨범의 콘텐츠 제공 업체에 _data 필드가없는 것 같습니다.
위치를 가져 오는 코드는 다음과 같습니다.
// imageUri는 위에서 본 Uri입니다. String [] proj = {MediaStore.Images.Media.DATA}; 커서 커서 = context.getContentResolver (). query (imageUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow (MediaStore.Images.Media.DATA); cursor.moveToFirst (); 문자열 filePath = cursor.getString (column_index); cursor.close ();
이 이미지에 대해 지원되는 유일한 열은 다음과 같습니다. [user_account, picasa_id, _display_name, _size, mime_type, datetaken, latitude, longitude, orientation]
이 이미지의 실제 위치를 어떻게 얻습니까? 그리고 우리가이 이미지로 작업하지 않는다면, 이 이미지들은 처음에 사용자에게 보여서는 안됩니다.
갤러리 앱을 시작하려는 의도는 다음과 같습니다.
의도 의도 = new Intent (); intent.setType ( "이미지 / *"); intent.setAction (Intent.ACTION_GET_CONTENT);
많은 연구 끝에 저는 아주 간단한 일을하기에는 너무 많은 해결 방법이 있다고 느꼈습니다. 그래서 저는 다른 모든 복잡한 것을 처리하고 제가 생각할 수있는 모든 가능한 시나리오에서 작동하는 작은 라이브러리를 작성했습니다. 시도해보고 이것이 도움이되는지 확인하십시오.
http://techdroid.kbeanie.com/2013/03/easy-image-chooser-library-for-android.html
이것은 초기 구현입니다. 거의 모든 상황을 처리하지만 몇 가지 버그가있을 수 있습니다. 이 라이브러리를 사용하는 경우 피드백을 알려 주시고 추가 개선이 필요한 경우 알려주십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다