【问题标题】:Image saved from webview but not showing in Gallery从 web 视图保存但未显示在图库中的图像
【发布时间】:2018-12-26 03:43:45
【问题描述】:

我想通过长按从WebView 下载图片。该代码运行顺利,并下载了我认为它保存在缓存中的图像,因为每当我尝试打开图像时它都会消失。我想将图像永久保存在内部下载文件夹中。但是如果我设置了

   request.setDestinationInExternalPublicDir();

它崩溃了。 现在该怎么办?

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

        final WebView.HitTestResult result = mWebView.getHitTestResult();
        if (result.getType() == WebView.HitTestResult.IMAGE_TYPE ||
                result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {

            //menu.setHeaderTitle(result.getExtra());
            menu.add(0, 1, 0, "Save Image")
                    .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem menuItem) {

                            String DownloadImageURL = result.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) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
                                downloadManager.enqueue(request);

                                Toast.makeText(getContext(),"Image save successfully.",Toast.LENGTH_SHORT).show();
                            }
                            else {
                                Toast.makeText(getContext(),"Error to save image.",Toast.LENGTH_SHORT).show();
                            }
                            return false;
                        }
                    });
        }
    }

LogCat 输出

 BoostFramework() : mPerf = com.qualcomm.qti.Performance@fe8297a
07-18 15:42:49.964 20572-20572/com.example.aashiq.tonu D/AndroidRuntime: Shutting down VM
07-18 15:42:49.968 20572-20572/com.example.aashiq.tonu E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.aashiq.tonu, PID: 20572
    java.lang.IllegalStateException: Unable to create directory: /storage/emulated/0/down
        at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:636)
        at com.example.aashiq.tonu.MainActivity$1.onMenuItemClick(MainActivity.java:78)
        at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:148)
        at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:904)
        at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:894)
        at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:166)
        at com.android.internal.app.AlertController$AlertParams$4.onItemClick(AlertController.java:1154)
        at android.widget.AdapterView.performItemClick(AdapterView.java:310)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1164)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:3154)
        at android.widget.AbsListView$3.run(AbsListView.java:4097)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6221)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
07-18 15:42:50.065 20572-20572/com.example.aashiq.tonu I/Process: Sending signal. PID: 20572 SIG: 9

【问题讨论】:

  • 请提供异常的LogCat输出
  • 是的,我提供了,看看

标签: android download android-webview android-download-manager


【解决方案1】:

似乎是Permission 的问题。

您是否在您的AndroidManifest.xml 中声明了permission

看看https://developer.android.com/training/data-storage/files

【讨论】:

猜你喜欢
  • 2021-06-23
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多