13

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 と他のいくつかのデバイスでは、両方のインテントがアクティビティを破壊するため、戻るときに webview がリロードされています。noHistoryにフラグがありませんAndroidManifest.xml。その問題の原因は何ですか? ここで自分のアクティビティを破棄しないようにすることはできますか?

4

4 に答える 4

0

間違っていなければ、デバイスからカメラを開いています。他のアプリがカメラを取得していないことを確認しましたか? カメラ アクティビティを開始する前にカメラを取得する必要があります。これは、カメラ インスタンスを使用する他のアプリである可能性があります。カメラ インスタンスon destroyまたはonstop アクティビティメソッドで解放する必要があります。これにより、次回は他のアプリまたは自分のアプリで使用できるようになります。 .

于 2013-06-27T12:44:08.170 に答える
0

愚かな推測かもしれません。しかし、それは破壊されているため、デバイスのメモリが不足していたことを意味します。

唯一の煩わしさが webview のリロードである場合、コンテンツをキャッシュすることでこれを解決できるでしょうか?

たとえば、アクティビティの onStop() メソッドでは、webview のコンテンツを取得してどこかに保存します。一時ファイル、sqlite、... . そして onCreate で、キャッシュがあるかどうか(そしておそらくそれがどれくらい古いか)を確認し、必要に応じてそれをwebviewに入れます。

WebView から HTML コードを取得するためのチュートリアル: http://lexandera.com/2009/01/extracting-html-from-a-webview/

于 2013-01-31T09:32:30.497 に答える