У меня есть это приложение, которое работало отлично, пока приложение для бизнеса не купило всех Huawei Y5lite с android go , затем приложение начало ломаться во время съемки изображений.Я пытался взломать это последние четыре дня, но безуспешно.Аварии случайные и не следуют какой-либо схеме, это означает, что приложение может сделать несколько снимков без сбоев, а затем в какой-то момент происходит сбой, что заставляет меня думать, что моя активность прерывается, когда на заднем плане и в камере на переднем плане, и такonActivityResult не удается.Я попытался сохранить URL-адрес изображения onSaveInstanceState и получить его onCreate, но не решил его ниже. Ниже приведен мой соответствующий код и ошибки
private void launchCamera() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = BitmapUtils.createTempImageFile(this);
} catch (IOException ex) {
ex.printStackTrace();
}
if (photoFile != null) {
mTempPhotoPath = photoFile.getAbsolutePath();
// Get the content URI for the image file
Uri photoURI = FileProvider.getUriForFile(this,
FILE_PROVIDER_AUTHORITY,
photoFile);
// Add the URI so the camera can store the image
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
// Launch the camera activity
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
}
//saving the filename incase activity is killed
@Override
public void onSaveInstanceState(Bundle bundle)
{
super.onSaveInstanceState(bundle);
bundle.putString("fileName", mTempPhotoPath);
}
//retrieving file name onCreate
if (savedInstanceState != null){
mTempPhotoPath = savedInstanceState.getString("fileName");}
// processing the image
private void processAndSetImage() {
switch (imageTaken) {
case "imageOne":
//I did the try-catch to see if I can isolate the issue but still crashes
try{
mAddImageOne.setVisibility(View.GONE);
mResultsBitmap = BitmapUtils.resamplePic(this, mTempPhotoPath);
mOneView.setVisibility(View.VISIBLE);
mOneView.setImageBitmap(mResultsBitmap);
findViewById(R.id.front_image_text).setVisibility(View.VISIBLE);
findViewById(R.id.save_cancel).setVisibility(View.VISIBLE);
}catch (Exception e){
Toast toast = Toast.makeText(getApplicationContext(), "Please try take the picture again",
Toast.LENGTH_LONG);
toast.setGravity(Gravity.BOTTOM, 0, 1100);
toast.show();
}
break;
case "imageTwo":
try{
mAddImageTwo.setVisibility(View.GONE);
mTwoView.setImageBitmap(mResultsBitmap);
mResultsBitmap = BitmapUtils.resamplePic(this, mTempPhotoPath);
findViewById(R.id.front_image_label_text).setVisibility(View.VISIBLE);
findViewById(R.id.save_cancel).setVisibility(View.VISIBLE);
mTwoView.setVisibility(View.VISIBLE);
}catch (Exception e){
Toast toast = Toast.makeText(getApplicationContext(), "Please try take the picture again",
Toast.LENGTH_LONG);
toast.setGravity(Gravity.BOTTOM, 0, 1100);
toast.show();
}
break;
}
Ниже приведена ошибка, которую я получаю, когда происходит сбой.(Иногда фотографирование и обработка выполняются хорошо, иногда происходит сбой)
02-05 13: 53: 22.139 23081-23086 / com.avigail.tuborg I / zygote: Выполнить сбор кеша частичного кода, code =25 КБ, данные = 30 КБ 02-05 13: 53: 22.140 23081-23086 / com.avigail.tuborg I / zygote: после сбора кэша кода, код = 25 КБ, данные = 30 КБ 02-05 13: 53: 22.141 23081-23086 /com.avigail.tuborg I / zygote: увеличение емкости кэша кода до 128 КБ 02-05 13: 53: 22.277 23081-23081 / com.avigail.tuborg D / AndroidRuntime: завершение работы VM 02-05 13: 53: 22.284 23081-23081/com.avigail.tuborg E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.avigail.tuborg, PID: 23081 java.lang.RuntimeException: Невозможно возобновить активность {com.avigail.tuborg / com.avigail.kaskazi.activities.StockistActivity}: java.lang.RuntimeException: сбой при доставке результата ResultInfo {who = null, request = 1, result = -1, data = null} в действие {com.avigail.tuborg / com.avigail.kaskazi.activities.StockistActivity}: java.lang.NullPointerException: попытка вызватьвиртуальный метод 'int java.lang.String.hashCode ()' для ссылки на пустой объект в android.app.ActivityThread.performResumeActivity (ActivityThread.java:3844) в android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3884) вandroid.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3053) в android.app.ActivityThread.-wrap11 (неизвестный источник: 0) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1777) в android.os.Handler.dispatchMessage (Handler.java:106) на android.os.Looper.loop (Looper.java:166) на android.app.ActivityThread.main (ActivityThread.java:6861) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:450) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936). Вызывается: java.lang.RuntimeException: ошибка при доставке результата ResultInfo {who = null, request = 1, result = -1, data = null} в действие {com.avigail.tuborg / com.avigail.kaskazi.activities.StockistActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод int java.lang.String.hashCode () для нулевой ссылки на объект в android.app.ActivityThread.deliverResults (ActivityThread.java:4564) в android.app.ActivityThread.performResumeActivity.(ActivityThread.java:3816) в android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3884) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3053) в android.app.ActivityThread.-wrap11 (неизвестный источник:0) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1777) в android.os.Handler.dispatchMessage (Handler.java:106) в android.os.Looper.loop (Looper.java:166) вandroid.app.ActivityThread.main (ActivityThread.java:6861) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:450)at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936) Причина: java.lang.NullPointerException: Попытка вызвать виртуальный метод int java.lang.String.hashCode () для ссылки на пустой объектв com.avigail.kaskazi.activities.StockistActivity.processAndSetImage(StockistActivity.java:392)
в com.avigail.kaskazi.activities.StockistActivity.onActivityResult(StockistActivity.java:377)
в android.app.Activity.dispatchActivityResult (Activity.java:7393) в android.app.ActivityThread.deliverResults (ActivityThread.java:4560) в android.app.ActivityThread.performResumeActivity (ActivityThread.java): 3816) в android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3884) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3053) в android.app.ActivityThread.-wrap11 (неизвестный источник: 0) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1777) в android.os.Handler.dispatchMessage (Handler.java:106) в android.os.Looper.loop (Looper.java:166) в android.app.ActivityThread.main (ActivityThread.java:6861) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:450) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Я буду очень признателен за вашу помощь PS: я видел различные вопросы, касающиеся этой проблемы, но ни один из ответов не работал, включая проверку, если данныеnull (мои данные равны null, потому что я добавляю дополнительную опцию), сохраняя URL-адрес изображения наSaveInstanceState, проверяя, возвращает ли результат intentfor результат ok