Webview里面下载文件不需要弹出内置浏览器的

行者man 2016-11-15 04:47:27
要怎么做!!!!!!!!!!!!!!!!!!
...全文
18254 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjz729827161 2016-11-16
  • 打赏
  • 举报
回复
引用 2 楼 it_manman 的回复:
[quote=引用 1 楼 xjz729827161 的回复:] 可以写个子类继承WebView ,把loadUrl进行重写,如果遇到需要进行下载的url则进行拦截,获取到路径后自己通过后台来进行下载。
能给个例子或者源码吗?小白不懂你的意思[/quote] 好吧,其实我说错了,不过稍候给你个例子。帮我把2楼的删了吧
行者man 2016-11-16
  • 打赏
  • 举报
回复
引用 1 楼 xjz729827161 的回复:
可以写个子类继承WebView ,把loadUrl进行重写,如果遇到需要进行下载的url则进行拦截,获取到路径后自己通过后台来进行下载。
能给个例子或者源码吗?小白不懂你的意思
xjz729827161 2016-11-16
  • 打赏
  • 举报
回复
可以写个子类继承WebView ,把loadUrl进行重写,如果遇到需要进行下载的url则进行拦截,获取到路径后自己通过后台来进行下载。
xjz729827161 2016-11-16
  • 打赏
  • 举报
回复
1.如果这个webView加载的html文件是你或者你们团队自己写的,那可以把下载的动作写成与客户端交互,这样比较好处理 2.如果你加载的html是随便的一个html
WebView webView = (WebView) findViewById(R.id.my_webview);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return super.shouldOverrideUrlLoading(view, url);
            }
        });
        webView.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
                //在这里进行下载的处理。
                // 如果你没有进行处理,一般APP就不会开始下载行为,在这里可以自己开启一个线程来下载
                Log.i("download","url"+url);
                Log.i("download","contentDisposition"+contentDisposition);
                Log.i("download","mimetype"+mimetype);
            }
        });
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://www.baidu.com");
以百度为例,打开百度首页会看到下面有个立即下载,点击一下下载APP,会看到如下的log
3:44:38.499 20792-20792/com.facebook.samples.demo I/chromium: [INFO:CONSOLE(0)] "Mixed Content: The page at 'https://m.baidu.com/?from=844b&vit=fps' was loaded over HTTPS, but requested an insecure resource 'baiduboxapp://utils?action=sendIntent&minver=6.9.1¶ms=%7B%22intent%22%3A%22%23Intent%3Bpackage%3Dcom.baidu.searchbox%3Baction%3Dcom.baidu.searchbox.action.SEARCH%3Bcategory%3Dandroid.intent.category.DEFAULT%3BS.key_value%3D%E7%BB%BC%E8%89%BA%3Bend%22%7D&needlog=1&logargs=%7B%22source%22%3A%22invokeBdBox_baiduBoxWiseBanner%2C32C762D5EA6819EB06F9F8426D4DD336%2Candroid_6%2Corigin%22%7D'. This content should also be served over HTTPS.", source: https://m.baidu.com/?from=844b&vit=fps (0)
11-16 13:44:38.576 20792-20792/com.facebook.samples.demo W/cr.BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 20792
11-16 13:44:49.931 20792-20792/com.facebook.samples.demo I/download: urlhttp://downapp.baidu.com/baidusearch/AndroidPhone/8.0.0.16/1/1010750s/20160928140142/baidusearch_AndroidPhone_8-0-0-16_1010750s.apk?responseContentDisposition=attachment%3Bfilename%3D%22baidusearch_AndroidPhone_1010750s.apk%22&responseContentType=application%2Fvnd.android.package-archive&request_id=1479275090_3764879851&type=static
11-16 13:44:49.932 20792-20792/com.facebook.samples.demo I/download: contentDispositionattachment;filename="baidusearch_AndroidPhone_1010750s.apk"
11-16 13:44:49.932 20792-20792/com.facebook.samples.demo I/download: mimetypeapplication/vnd.android.package-archive
11-16 13:44:49.940 20792-20792/com.facebook.samples.demo W/cr.BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 20792
OK ,符合预定要求,想怎么下载都在那个回调监听里进行处理吧

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧