안드로이드 응용 프로그램에서 그림을 저장하려고합니다. 여기 내 콜백 함수입니다 :안드로이드 카메라 응용 프로그램에서 null 포인터 예외가
ShutterCallback myShutterCallback = new ShutterCallback(){
@Override
public void onShutter() {
Log.d(TAG, "shutter callback");
}};
PictureCallback myPictureCallback_RAW = new PictureCallback(){
@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
Log.d(TAG, "raw callback");
}};
PictureCallback myPictureCallback_JPG = new PictureCallback(){
@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length);
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, "title");
values.put(Images.Media.BUCKET_ID, "test");
values.put(Images.Media.DESCRIPTION, "test Image taken");
values.put(Images.Media.MIME_TYPE, "image/jpeg");
Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriTarget);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(CameraView.this,
"Image saved: " + uriTarget.toString(),
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
Log.d(TAG, "file not found " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
Log.d(TAG, "io exception " + e.getMessage());
e.printStackTrace();
}
//camera.startPreview();
finish();
}
};
문제는 휴대폰의 여러 가지 유형의를 들면, 나는 NullPointerException
이 줄에서 얻을 :
imageFileOS = getContentResolver().openOutputStream(uriTarget);
은 사람이하기 전에이로 실행 했습니까?
편집 - 스택 트레이스는
04-24 11:52:03.979: E/AndroidRuntime(12695): FATAL EXCEPTION: main
04-24 11:52:03.979: E/AndroidRuntime(12695): java.lang.NullPointerException
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:465)
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.content.ContentResolver.openOutputStream(ContentResolver.java:361)
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.content.ContentResolver.openOutputStream(ContentResolver.java:337)
04-24 11:52:03.979: E/AndroidRuntime(12695): at com.appfury.grafighters.CameraView$4.onPictureTaken(CameraView.java:234)
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:536)
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.os.Looper.loop(Looper.java:150)
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.app.ActivityThread.main(ActivityThread.java:4263)
04-24 11:52:03.979: E/AndroidRuntime(12695): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 11:52:03.979: E/AndroidRuntime(12695): at java.lang.reflect.Method.invoke(Method.java:507)
04-24 11:52:03.979: E/AndroidRuntime(12695): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-24 11:52:03.979: E/AndroidRuntime(12695): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-24 11:52:03.979: E/AndroidRuntime(12695): at dalvik.system.NativeStart.main(Native Method)
'uriTarget'이 null이 아닌지 확인 했습니까? –
나는 그냥 확인했는데 null이다. 이 문제를 어떻게 방지 할 수 있습니까? ContentResolver가 uri 행을 삽입하지 않는 이유에 대한 아이디어가 있습니까? – coder
http://stackoverflow.com/questions/9182022/android-getcontentresolver-insert-occometimes-returning-null – slayton