Приложение уходит в фоновом режиме, когда для камеры вызывается startActivityForResult.Следовательно, onActivityResult никогда не вызывается, и изображение никогда не возвращается в приложение. - PullRequest
1 голос
/ 08 мая 2019

Изображение не возвращается, когда снимок сделан с камеры, вместо этого приложение закрывается, и я вижу домашний экран телефона, когда снимок сделан, и я нажимаю на кнопку «Готово» с камеры или нажимаю на крестик на камере.Я заметил, что метод onDestroy () фрагмента и родительская активность фрагмента вызывается, как только камера открывается.Я вижу приложение в фоновых задачах телефона.

android: configChanges = "direction | screenSize" Я пробовал выше в файле манифеста после Android: уничтожение активности после вызова намерения камеры

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
 setUpPermissions() 
}

private fun setUpPermissions() {
    if (!hasPermissions(activity, *PERMISSIONS)) {
        ActivityCompat.requestPermissions(activity!!, PERMISSIONS, PERMISSION_ALL)
    } else {
      showDialogForCameraAndGallery()
    }
}

 private fun showDialogForCameraAndGallery() {
        val builder = android.support.v7.app.AlertDialog.Builder(activity!!)
        builder.setTitle("Select Option")
        builder.setItems(options, DialogInterface.OnClickListener { dialog, item ->
            if (options[item] == "Take Photo") {
                dialog.dismiss()
                openCamera()
            } else if (options[item] == "Choose From Gallery") {
                dialog.dismiss()
                openGallery()
            } else if (options[item] == "Cancel") {
                dialog.dismiss()
            }
        })
        builder.show()
    }

private fun openCamera() {
        val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
     startActivityForResult(intent,
             CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE)
    }

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    Log.e(" on Activity called", "  frgamnet$requestCode")
}

override fun onDestroy() {
    Log.e(" ondestroy ", "of fragment");
    super.onDestroy()
}

Родительский код активности

 @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.e( " onActivity result ", "called");
    }

    @Override
    public void onDestroy() {
        Log.e(" desturo called", "activity");
        super.onDestroy();
    }
...