アプリからカメラを起動しました。画像をキャプチャした後にアプリを再開すると、アプリがクラッシュすることがあります。そして、私のAPPは再び再起動されます.
この種のクラッシュを処理するにはどうすればよいですか?
public void onClick(View view)
{
// TODO Auto-generated method stub
if(view==btnAddPrescription)
{
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo=getOutputMediaFile(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
Log.v("Image URI", imageUri.toString());
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.v("requestCode",requestCode+"");
Log.v("resultCode",resultCode+"");
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE)
{
if (resultCode == RESULT_OK)
{
selectedImageUri = imageUri;
newPictPath=selectedImageUri.getPath();
this.setSelectedPath(newPictPath);
Log.v("newPictPath",newPictPath);
getContentResolver().notifyChange(selectedImageUri, null);
ImageView imageView = (ImageView) findViewById(R.id.img_prescription);
ContentResolver cr = getContentResolver();
Bitmap bitmap;
try
{
bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImageUri);
imageView.setImageBitmap(bitmap);
//Toast.makeText(this, selectedImageUri.toString(),Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show();
Log.e("Camera", e.toString());
}
}
else if (resultCode == RESULT_CANCELED)
{
// User cancelled the image capture
}
else
{
// Image capture failed, advise user
}//else ends here
}//if ends here
}
私はこのコードを使用しています。エミュレータ上では正常に動作します。しかし、デバイスで実行すると、 java.lang.RuntimeException: Failure delivery result ResultInfo{who=null, request=0, result=-1, data=null} をスローしてクラッシュすることがあり、この例外をアクティブにします。