我的 Activity 有一个 intent 过滤器,可以获取特定的 url 并在 WebView 控件中打开它,这会将用户带到一个授权页面(用户名/密码)。身份验证完成后,用户将获得二进制流响应(文件)。有没有办法处理该响应并从流中读取数据?
我尝试使用覆盖的 shouldOverrideUrlLoading 方法设置自定义 WebViewClient,但应用程序无法到达那里。
@Override
mMyWebView.setWebViewClient(new CustomWebClient());
mMyWebView.loadUrl("http://xxx.xx.x.xx:xxxx/getCert");
...
private class CustomWebClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading (WebView view, String urlConection)
{
// break point here doesn't stop debugger
return true;
}
}
都不行
mMyWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading (WebView view, String urlConection)
....
});
服务器以相同的方式响应来自“我的应用”和内置浏览器的请求。内置浏览器开始下载响应中收到的文件,但我的应用程序没有执行任何操作,也没有在 CustomWebClient 中命中断点。 这是一个单独的应用程序,只是为了测试这件作品,没有其他东西会干扰它。添加了 INTERNET 和 WRITE_EXTERNAL_STORAGE 权限。
编辑:3 月 8 日 放弃。将与 httpClient 一起使用。
最佳答案
WebView的这个方法你实现了吗?
void setDownloadListener(DownloadListener 监听器) 注册渲染引擎无法处理内容时要使用的接口(interface),应该下载该接口(interface)。
关于android - 如何在 WebView 中处理二进制数据响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608202/