Задать вопрос
@xaiponews

Как открыть изображение из webviev в новом activity?

Есть приложение с отображением веб страницы. Нужно чтобы при нажатии на изображение оно открывалось в новом acivity. В последствии там будут производить разные манипуляции, такие как масштабирование и перемещение фокуса. Какие команды и методы использовать?
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
evsmusic
@evsmusic
Можно использовать JavaScriptInterface, написать простенький скрипт, по клику на нужную картинку строка с урлом будет передаваться обратно в приложение, а там уже открывать активити и делать с урлом картинки что нужно.

https://developer.android.com/guide/webapps/webvie...
Ответ написан
@xaiponews Автор вопроса
Вот решение

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        final WebView.HitTestResult webViewHitTestResult = webView.getHitTestResult();
        if (webViewHitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE || webViewHitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE){
            
            menu.add("Сохранить изображение").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {

                    String downloadImg = webViewHitTestResult.getExtra();
                    if (URLUtil.isValidUrl(downloadImg)){
                        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadImg));
                        request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
                        request.setAllowedOverRoaming(false);
                        request.setTitle("GadgetSaint Downloading " + "Sample" + ".png");
                        request.setDescription("Downloading " + "Sample" + ".png");
                        request.setVisibleInDownloadsUi(true);
                        request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "/GadgetSaint/"  + "/" + "Sample" + ".png");
                        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
                        DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                        downloadManager.enqueue(request);
                    }
                    return false;
                }
            });
        }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы