android - 从 android webview 下载图像。这些图像保存在哪里?

标签 android webview optionmenu imagedownload

我创建了一个 webview android 应用程序并添加了“长按保存图像”选项。
代码运行没有问题,它也下载了图像,我可以从通知面板打开下载的图像,但我不知道它保存在哪里。我搜索了我存储的每个文件夹,但找不到该文件。 这是我的“上下文菜单”的代码

//To save image from web view
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    // Get the web view hit test result
    final WebView.HitTestResult result = myWebView.getHitTestResult();

    /*
        WebView.HitTestResult

            IMAGE_TYPE
                HitTestResult for hitting an HTML::img tag.

            SRC_IMAGE_ANCHOR_TYPE
                HitTestResult for hitting a HTML::a tag with src=http + HTML::img.
    */

    // If user long press on an image
    if (result.getType() == WebView.HitTestResult.IMAGE_TYPE ||
            result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {

        // Set the title for context menu
        menu.setHeaderTitle("CONTEXT MENU");

        // Add an item to the menu
        menu.add(0, 1, 0, "Save Image")
                .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem menuItem) {
                        // Get the image url
                        String imgUrl = result.getExtra();

                        // If this is an image url then download it
                        if (URLUtil.isValidUrl(imgUrl)) {
                            // Initialize a new download request
                            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(imgUrl));
                            request.allowScanningByMediaScanner();
                            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                            DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);


                            downloadManager.enqueue(request);

                            Toast.makeText(myContext, "image saved.", Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(myContext, "Invalid image url.", Toast.LENGTH_SHORT).show();
                        }
                        return false;
                    }
                });

最佳答案

这应该将图像保存在 downloads 文件夹中。如果它没有保存在那里,您可以在代码中进行一些更改

request.setDestinationInExternalPublicDir(
                Environment.DIRECTORY_DOWNLOADS,    //Download folder
                URLUtil.guessFileName(DownloadImageURL, null, null));  //Name of file

DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);

您需要在 list 文件中提供存储权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

此外,以编程方式授予权限,现在您可以将此图像保存到您想要指定的任何位置。

关于android - 从 android webview 下载图像。这些图像保存在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49782506/

相关文章:

java - Android:使用带有动态 url 的 Retrofit

android - 在特定序列后播放声音的多点触控图像

Android选项菜单-单行一个菜单项

android - 如何在工具栏中显示带有文本的图标

android - 如何获取 android GPS 使用的实际数据?

java - 通过 WiFi 进行通信的最有效方式

android - 消息上下文不显示在 android 的 webview 中

java - 想创建 "2 tabs with 2 separate webview"

android - 如何在 WebView 中启用缩放控件和捏缩放?

python - 在 optionMenu Tkinter 中获取所选项目的值