Я разрабатываю приложение для Android и мое приложение имеет кнопку для съемки камеры. Раньше я попал в состояние, в котором возвращались данные в onActivityResult после снятия картинки null. Это ожидаемое поведение камеры, в результате чего, если мы поместим EXTRA_OUTPUT
в намерение, оно вернет null
. По этой причине я сделал нулевой код проверки, и все прошло отлично.Android-камера возвращается с пустой целью
Теперь снова через несколько дней, и я тестировал. Я все еще попал в одну и ту же проблему. Но на этот раз data
не null
. data
имеет пустые намерения, такие как intent
и data.getData()
. null
. Я установил это, проверив data.getData() == null
, и он снова работает. Я не понимаю, почему это так. Просто интересно, что происходит. По этой причине мне приходится снова загружать на производство. :-(
//camera intent
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra("requestCode", Constants.REQUEST_IMAGE_CAPTURE);
Intent chooseImageIntent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
chooseImageIntent.setType("image/* video/*");
chooseImageIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
chooseImageIntent.putExtra("requestCode", Constants.REQUEST_CHOOSE_FROM);
//app can use camera
if (takePictureIntent.resolveActivity(mContext.getPackageManager()) != null) {
//add output file path which camera will save image to
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Helpers.getOutputMediaFileUri());
//create choose
Intent chooser = Intent.createChooser(chooseImageIntent, "Select From");
//add take camera intent as first intent
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,new Intent[]{takePictureIntent});
//open up dialog
((Activity) mContext).startActivityForResult(chooser, Constants.REQUEST_CHOOSE_FROM);
} else {
((Activity) mContext).startActivityForResult(chooseImageIntent, Constants.REQUEST_IMAGE_GALLERY);
}
EDITED
Я знаю, что я, как решить эту проблему. Что я не понимаю, вернуть data
должен быть null
если я ставлю в EXTRA_OUTPUT. В основном важно код, который я реализовал несколько недель назад, я вполне уверен, что data
возвращает null
, и внезапно это значение не равно null
.
Не используйте 'data.getData()', вместо этого используйте 'data.getExtras(). Get (" data ");', См., Если проблема снова возникает. –
Причина, по которой я не использую 'data.getExtras()' is cuz, если я передаю extra_output в намерении, 'data' становятся' null'. Это факт, если я не ошибаюсь – Sanny