내가 뭘 잘못하고 있니? createImageFile사진 의도 제로 길이 이미지
takePictureIntent
private void takePictureIntent(int request) {
final Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(activity.getPackageManager()) != null) {
File file = null;
try {
file = createImageFile(request);
} catch (Exception e) {
showErrorDialog(getString(R.string.error), getString(R.string.error_saving_picture));
Log.e(TAG, "Error while creating image file.");
}
if (file != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(takePictureIntent, request);
} else {
Log.e(TAG, "Error while creating image file.");
showErrorDialog(getString(R.string.error), getString(R.string.error_saving_picture));
}
}
}
private File createImageFile(final int request) {
final File storageDir = new File(activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES), getString(R.string.app_name));
if (!storageDir.exists()) {
if (!storageDir.mkdirs()) {
Log.e(TAG, "Cannot create parent folders.");
return null;
}
}
File file = null;
try {
file = File.createTempFile("test_", ".jpg", storageDir);
} catch (Exception e) {
Log.e(TAG, "Error while creating temp file.");
}
fileProduct = file;
return file;
}
onActivityResult를
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_IMAGE_PRODUCT) {
if (fileProduct == null ||!fileProduct.exists() ||fileProduct.length() == 0) {
showErrorDialog(getString(R.string.error), getString(R.string.error_taking_product_picture));
return;
}
}
,536을 : 나는 전체 크기의 사진을 얻을 수있는 의도를 호출하기 위해 노력하고있어 때로는 (예, 때로는) 결과 파일의 길이가 0입니다. 나는 비공개 앱 컨텍스트의 폴더와 이미지 파일 (길이가 0 이상)을 확실히 알고 있습니다. 좀 도와 주실 수 있겠습니까? Nexus 5X에서 6.0 버전입니다.
1과 2는 괜찮 았지만 Nexus 카메라 앱에서 그런 버그는 기대하지 않습니다 ...이 코드는 Lollipop이있는 Motorola Moto G 2014에서 정상적으로 작동합니다. 이것이 도움이 될 수 있다면 프래그먼트에서 startActivityForResult를 호출하려고합니다. 내가 여기서 얻지 못하는 것은 이미지가 있다는 것입니다. 파일 시스템은 ... sob입니다. – Jumpa
@ Jumpa : 문제가 길이가 0 인 파일이 아닙니다. 내 생각 엔 프로세스가 백그라운드에서 종료 되었기 때문에'fileProduct'는'null'입니다. – CommonsWare
나는 그것이 존재하는지 테스트했다. (나는 exist() 메소드를 의미한다) 그리고 null이 아니다. – Jumpa