Загрузка изображения из локального хранилища Android в WebView - PullRequest
1 голос
/ 09 октября 2019

Можно ли загрузить изображение в WebView из локальной памяти телефона Android? По сути, я пытаюсь сделать снимок, затем отобразить это изображение внутри WebView (например, изображение для предварительного просмотра), а затем, после заполнения дополнительной информации, загрузить это изображение со всеми данными в базу данных. Все в Java-коде студии android, WebView - это, очевидно, файлы .html, которые я загружаю из папки активов.

Я думал, может быть, мне нужно создать <img id="image"></img>, а затем как-нибудь получить идентификатор? Но как мне сохранить изображение внутри, даже если мне удастся получить идентификатор?

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

Если вам нужен какой-либо код, я отредактирую.

1 Ответ

1 голос
/ 13 октября 2019

Итак, я нашел решение для того, что я хотел сделать, и выкладываю ответ здесь, если кто-нибудь когда-нибудь задумается над этим сообщением и захочет узнать решение.

По сути, после съемки я вызываюФункция javascript, которая помещает захваченное изображение в мой .html файл между <img></img> тегами в качестве источника. Это мой onActivityResult в MainActivity.java:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK) {
            //Getting the full image path of the image taken
            final String imagePath = "file://"+ currentPhotoPath;
            webView.post(new Runnable() {
                @Override
                public void run() {
                    webView.evaluateJavascript("postImage('" + imagePath + "')", null);
                }
            });
            getLocation();
            if (data == null) {
                //Display an error
                Log.d("performClick", "Error: data == null");
                return;
            }
        }
    }

. Он вызывает функцию javascript postImage и передает imagePath в качестве параметра, а функция в моем файле hello.js:

function postImage(imagePath){
    document.body.innerHTML = "<img src=\""+ imagePath + "\">";
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...