안드로이드 개발 질문/답변
(글 수 45,052)
사진 촬영 후, 사진을 가져오기 위해 경로를 받아오는데요.
아래의 소스코드가 디자이어에서는 정상적으로 경로를 받아오는데,
갤럭시S에서는 오류가 뜨네요.. 혹시 이유를 알고 계신분 없나요?
도움부탁드립니다!!
소스코드
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e(TAG, " ++ ON ACTIVITY RESULT ++ ");
Log.d(TAG," requestCode : " + requestCode + " / resultCode " + resultCode);
if(resultCode == RESULT_OK)
{
if(requestCode == TAKE_CAMERA)
{
Log.i(TAG, " ++ TAKE CAMERA ++ ");
Uri curImgURI = data.getData();
Log.i(TAG, " ++ DATA GET URI ++ ");
// TODO: 원래대로 할 경우 경로 설정 아래와 같이
/* 갤럭시S에서 동작 X => filepath error
* 갤럭시S 테스트시 강제로 사진 파일 지정해야함 */
if(D) Log.i(TAG,"++Audio File Path : "+getRealPathFromURI(curImgURI).substring(4));
AddPicturePath = getRealPathFromURI(curImgURI).substring(4);
isAddPicture = true; // 사진이 추가 되었음을 알리는 Flag
}
// TODO: 카메라 촬영 아닌 갤러리 구현
else if(requestCode == TAKE_GALLERY)
{
}
}
}
public String getRealPathFromURI(Uri contentUri)
{
String [] proj={MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery( contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
Log 오류 메시지
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): java.lang.RuntimeException: Failure delivering result ResultInfo{who=tab_home, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {kor.esdl.lsis/kor.esdl.lsis.MainTab}: java.lang.NullPointerException
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.ActivityThread.deliverResults(ActivityThread.java:3329)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3371)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.ActivityThread.access$2700(ActivityThread.java:119)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.os.Handler.dispatchMessage(Handler.java:99)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.os.Looper.loop(Looper.java:123)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.ActivityThread.main(ActivityThread.java:4364)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at java.lang.reflect.Method.invokeNative(Native Method)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at java.lang.reflect.Method.invoke(Method.java:521)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at dalvik.system.NativeStart.main(Native Method)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): Caused by: java.lang.NullPointerException
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.content.ContentResolver.acquireProvider(ContentResolver.java:754)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.content.ContentResolver.query(ContentResolver.java:197)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.Activity.managedQuery(Activity.java:1504)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at kor.esdl.lsis.Home.getRealPathFromURI(Home.java:1031)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at kor.esdl.lsis.Home.onActivityResult(Home.java:1010)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.ActivityGroup.dispatchActivityResult(ActivityGroup.java:119)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): at android.app.ActivityThread.deliverResults(ActivityThread.java:3325)
09-30 22:45:08.649: ERROR/AndroidRuntime(12588): ... 11 more