javascript - 如何启用长按操作以在 android WebView 中下载图像?

标签 javascript java android android-studio android-webview

我想在 WebView 中对图像启用长按下载操作。那是我为此尝试过的代码 fragment :

 public void onCreate(Bundle savedInstanceState) {
        registerForContextMenu(descriptionWebView); 
    }

    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
      WebView.HitTestResult hitTestResult = descriptionWebView.getHitTestResult();
      switch (hitTestResult.getType()) {
        // ...
      }
    }

最佳答案

您需要为上下文菜单注册您的 WebView。在你的 Activity 中 registerForContextMenu(webView);

重写 onCreateContextMenu 方法后显示如下

WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView = (WebView)findViewById(R.id.WebView1);

    webView.getSettings().setJavaScriptEnabled(true);

    webView.setWebViewClient(new WebViewClient());

    registerForContextMenu(webView);

    webView.loadUrl(HTTP_URL);
}

@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo){
    super.onCreateContextMenu(contextMenu, view, contextMenuInfo);

    final WebView.HitTestResult webViewHitTestResult = webView.getHitTestResult();

    if (webViewHitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE ||
            webViewHitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {

        contextMenu.setHeaderTitle("Download Image From Below");

        contextMenu.add(0, 1, 0, "Save - Download Image")
                .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem menuItem) {

                        String DownloadImageURL = webViewHitTestResult.getExtra();

                        if(URLUtil.isValidUrl(DownloadImageURL)){

                            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(DownloadImageURL));
                            request.allowScanningByMediaScanner();
                            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                            DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                            downloadManager.enqueue(request);

                            Toast.makeText(MainActivity.this,"Image Downloaded Successfully.",Toast.LENGTH_LONG).show();
                        }
                        else {
                            Toast.makeText(MainActivity.this,"Sorry.. Something Went Wrong.",Toast.LENGTH_LONG).show();
                        }
                        return false;
                    }
                });
    }
}

或者这是另一种选择

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    final WebView.HitTestResult result = browser.getHitTestResult();
    MenuItem.OnMenuItemClickListener handler = new MenuItem.OnMenuItemClickListener() {
        public boolean onMenuItemClick(MenuItem item) {
            // handle on context menu click
            return true;
        }
    };

    if (result.getType() == WebView.HitTestResult.IMAGE_TYPE ||
            result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {

        menu.setHeaderTitle(result.getExtra());
        menu.add(0, 666, 0, "Save Image").setOnMenuItemClickListener(handler);
    }
}

关于javascript - 如何启用长按操作以在 android WebView 中下载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47850709/

相关文章:

javascript - jquery按键: trigger click when ctl+x and ctl+s

javascript - jQuery 单击将我带到页面顶部。但我想留在原地

android - 在 FSClient 和 Android 手机之间使用我的自定义 SIP 应用程序时没有音频

java - Java EE 项目中的服务层是否有必要通过 DAO 层与实体对话?

android - 当应用程序被杀死或销毁时如何启动 Intent 服务?

java - 如何解决在另一个 Activity 中搜索标题打不开实际描述的问题?

java - 帮助通过 JSNI 调用传递复杂对象以绕过静态范围

javascript - 音乐播放器与视频播放器混为一谈

java - 将字符串形式的整数转换为字符八位字节

java - Apache Solr 间歇性关闭