Итак, у меня есть эта страница в моем приложении, которая позволяет пользователю делать снимок с помощью своей камеры или выбирать изображение из галереи.Android: сборщик фотографий и намерение камеры сбрасываются на onActivityresult
После выбора диалогового окна предупреждения с выбранным изображением, установленным как значок, будет отображаться подтверждающий.
Сейчас здесь идет мою проблему, когда я пытаюсь получить изображение, используя либо сборщик галереи или намерение камеры, мое приложение вылетает сразу после с ошибкой:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=null} to activity {my.com.thelorry.ken.thelorrypartner/com.example.Activity}:
Если я использую намерение камеры или если я использовал галереи сборщика это показывает:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=null} to activity {com.example/com.example.Activity}:
Ниже приведены коды, которые я использовал, чтобы начать свою камеру намерения:
public void startCamera(){
ContentValues values;
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "New Picture");
values.put(MediaStore.Images.Media.DESCRIPTION, "From phone Camera");
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
И мои коды запуска галереи подборщика:
public void pickGallery(){
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, GALLERY_REQUEST);
}
Это мои коды для обработки результатов:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
photo = null;
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
try {
photo = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
photo = getResizedBitmap(photo, 600, 450);
File file = new File(imageurl);
file.delete();
} catch (Exception e) {
e.printStackTrace();
}
createDialog(photo);
}if (requestCode == GALLERY_REQUEST && resultCode == RESULT_OK && data != null) {
Uri pickedImage = data.getData();
String[] filePath = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(pickedImage, filePath, null, null, null);
cursor.moveToFirst();
String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
photo = getResizedBitmap(bitmap, 600, 450);
cursor.close();
createDialog(photo);
}
}
Кроме того, достаточно странно, этот код кажется врезаться только на телефонах Samsung на основе моих отчеты о сбоях, и только на некоторых моделях, таких как Galaxy J7, Note5, Note4 (пока приложение еще не имеет огромной пользовательской базы).
Edit: После того, как на самом деле получить телефон, который может воспроизвести аварии, я понимаю, что коды выше, не может быть проблема в конце концов, это то, что я имею в logcats:
Process: com.example, PID: 6220
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=null} to activity {com.example/com.example.Activity}: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
at android.app.ActivityThread.deliverResults(ActivityThread.java:4019)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4062)
at android.app.ActivityThread.access$1400(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5930)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
at android.content.res.Resources.getValue(Resources.java:1542)
at android.support.v7.widget.ResourcesWrapper.getValue(ResourcesWrapper.java:204)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:321)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:192)
at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:66)
at android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:71)
at com.android.internal.app.AlertController.setupTitle(AlertController.java:565)
at com.android.internal.app.AlertController.setupView(AlertController.java:474)
at com.android.internal.app.AlertController.installContent(AlertController.java:240)
at android.app.AlertDialog.onCreate(AlertDialog.java:356)
at android.app.Dialog.dispatchOnCreate(Dialog.java:373)
at android.app.Dialog.show(Dialog.java:274)
at com.example.Activity.createDialog(Activity.java:697)
at com.example.Activity.onActivityResult(Activity.java:618)
at android.app.Activity.dispatchActivityResult(Activity.java:6441)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4015)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4062)
at android.app.ActivityThread.access$1400(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5930)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
также:
FATAL EXCEPTION: main
Process: com.example, PID: 9794
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1889, result=-1, data=Intent { dat=content://media/external/images/media/3196 flg=0x1 (has extras) }} to activity {com.example/com.example.Activity}: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
at android.app.ActivityThread.deliverResults(ActivityThread.java:4019)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4062)
at android.app.ActivityThread.access$1400(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5930)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
at android.content.res.Resources.getValue(Resources.java:1542)
at android.support.v7.widget.ResourcesWrapper.getValue(ResourcesWrapper.java:204)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:321)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:192)
at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:66)
at android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:71)
at com.android.internal.app.AlertController.setupTitle(AlertController.java:565)
at com.android.internal.app.AlertController.setupView(AlertController.java:474)
at com.android.internal.app.AlertController.installContent(AlertController.java:240)
at android.app.AlertDialog.onCreate(AlertDialog.java:356)
at android.app.Dialog.dispatchOnCreate(Dialog.java:373)
at android.app.Dialog.show(Dialog.java:274)
at com.example.Activity.createDialog(Activity.java:697)
at com.example.Activity.onActivityResult(Activity.java:639)
at android.app.Activity.dispatchActivityResult(Activity.java:6441)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4015)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4062)
at android.app.ActivityThread.access$1400(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5930)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
Дополнительная информация, это моя функция createDialog, которая фактически вызывает проблемы.
Drawable icon = new BitmapDrawable(this.getResources(),photo);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.business_post_camera_dialog_title))
.setMessage(getString(R.string.business_post_camera_dialog_message))
.setCancelable(false)
.setPositiveButton(R.string.sign_confirm_btn, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
doSomething();
}
})
.setNegativeButton(R.string.sign_cancel_btn, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(-1).setIcon(icon); //setIcon(-1) as a workaround for bug in Android Lollipop 5.0
AlertDialog alert = builder.create();
alert.show();
Видимо .setIcon (-1) вызывает сбой на телефонах Samsung, но без него я не смог бы показать мои изображения там на некоторых телефонах еще на Lollipop 5.0, любое решение?
Проблема не в коде выше, он находится в CreateDialog (фото), так покажите мне ваш метод CreateDialog(). – Vickyexpert
Я включил это в свой пост, и да, вы правы, исправили проблему, но это также означает, что я должен отказаться от обходного пути, который мне нужен для телефонов с леденцом 5,0, найденных здесь: https://code.google.com/p/android/issues/detail? id = 92929, любое решение? – Ken
проверить мой ответ на этот вопрос – Vickyexpert