Цель камеры или галереи уничтожает старую активность на некоторых устройствах

Я работаю над приложением, которое использует WebView для отображения его содержимого. Однако для того, чтобы выбрать изображение, необходимо открыть камеру или галерею:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, 1); Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(galleryIntent, 2); 

Он работает отлично на большинстве устройств, но на HTC One и несколько других оба намерения разрушают мою деятельность, поэтому веб-просмотр перезагружается во время возвращения. У меня нет флага в AndroidManifest.xml . Что может быть причиной этой проблемы? Могу ли я избежать разрушения моей деятельности здесь?

Solutions Collecting From Web of "Цель камеры или галереи уничтожает старую активность на некоторых устройствах"

Как правило, Android убивает вашу активность, когда запускается другое приложение.

Вы должны сохранить состояние Activity в onSaveInstanceState, и когда активность будет воссоздана, восстановите состояние в onRestoreInstanceState или в onCreate.

Чтобы восстановить состояние WebView, вы можете использовать куки-файлы и сеансы и сохранять последний открытый URL-адрес. Когда активность будет воссоздана, просто перейдите на Web сохраненный URL-адрес и результат процесса с камеры.

 Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, 1); 

Увидев ваш код, я могу судить о том, что ваш девиз – захватить изображение и использовать его позже.

Это известная ошибка. Решение состоит в том, что вам нужно создать отдельную папку для своего приложения, и перед захватом вам нужно быть уверенным, что файл создан и тот же путь, который вы даете намерению камеры

 Uri uriSavedImage=Uri.fromFile(new File("/sdcard/seperate/newImage.png")); Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra("output", uriSavedImage); startActivityForResult(cameraIntent, 1); 

Ссылка: изображение с вопросом о намерениях камеры в android

Может быть, это глупость. Но поскольку он разрушен, это означает, что устройство было низким по памяти.

Если единственное раздражение заключается в том, что webview перезагружается, возможно, вы сможете решить эту проблему путем кэширования содержимого?

Например, в методе onStop () ваша деятельность получает содержимое webview и хранит его где-то. Временный файл, sqlite, …. И в onCreate проверить, есть ли кеш (и, может быть, сколько ему лет), и, если нужно, поместите это в веб-просмотр.

Учебник для получения HTML-кода с веб-просмотра: http://lexandera.com/2009/01/extracting-html-from-a-webview/

Если я не ошибаюсь, вы открываете камеру с устройства. Вы проверяете, что другое приложение не приобретает камеру? Вы должны приобрести камеру, прежде чем начать работу с камерой, может быть какое-то другое приложение, использующее экземпляр камеры. Вы должны освободить экземпляр камеры в режиме уничтожения или onstop, чтобы в следующий раз он будет доступен другому приложению для его использования или для вашего приложения. ,