CoderM
CoderM
  • 发布:2021-10-12 16:21
  • 更新:2021-10-12 16:51
  • 阅读:298

【报Bug】调用setWebviewclientListener底层循环报错

分类:HTML5+

产品分类: HTML5+

HBuilderX版本号: 3.2.9

手机系统: Android

手机系统版本号: Android 10

手机厂商: 模拟器

手机机型: 模拟器

打包方式: 云端

示例代码:
// 自己实现的Java层交互代码,JS调用init方法  
public void init(IWebview iWebview, JSONArray paramJsonArray) {  

        WebView.setWebContentsDebuggingEnabled(true);  
        android.util.Log.d("TestLog", "调用SDK的init方法了,设置监听");  

        // 调用 iWebview.setWebviewclientListener 底层循环报错  
        iWebview.setWebviewclientListener(new CMIDCloudWebviewClientListener() );  
        android.util.Log.d("TestLog", "url = "+iWebview.obtainWebview().getUrl());  

        //  此处代码不生效  
        iWebview.obtainWebview().setWebViewClient(new WebViewClient(){  

            @TargetApi(Build.VERSION_CODES.LOLLIPOP)  
            @Nullable  
            @Override  
            public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {  
                android.util.Log.d("CoderM", "shouldInterceptRequest");  
                return  WebViewCacheInterceptorInst.getInstance().interceptRequest(request);  
            }  

            @Nullable  
            @Override  
            public WebResourceResponse shouldInterceptRequest(WebView view, String url) {  
                android.util.Log.d("CoderM", "shouldInterceptRequest    url");  
                return  WebViewCacheInterceptorInst.getInstance().interceptRequest(url);  
            }  
        });  
        android.util.Log.d("CoderM", "设置完成");  
}

操作步骤:

使用5+形式开发安卓离线SDK 有需求为增加WebView缓存
在JS与java交互代码中拿到了IWebView对象, 最新版本的SDK已经弃用了obtainWebview方法 经测试iWebview.obtainWebview().setWebViewClient(自己实现的WebViewClient类) 无效,shouldInterceptRequest方法不会触发

后自行实现继承于IDCloudWebviewClientListener的一个类,实现shouldInterceptRequestshouldInterceptRequest

预期结果:

正确调用 setWebviewclientListener

实际结果:

底层循环报错

bug描述:

使用5+形式开发安卓离线SDK  有需求为增加WebView缓存,需要拿到webview中的请求内容  
在JS与java交互代码中拿到了**IWebView**对象,  最新版本的SDK已经弃用了**obtainWebview**方法   经测试**iWebview.obtainWebview().setWebViewClient(自己实现的WebViewClient类)** 无效,shouldInterceptRequest方法不会触发  

后自行实现继承于**IDCloudWebviewClientListener**的一个类,实现**shouldInterceptRequest**与**shouldInterceptRequest**

但是在调用iWebview.setWebviewclientListener方法时,底层报循环错误

2021-10-12 16:21 负责人:无 分享
已邀请:
DCloud_Android_zl

DCloud_Android_zl

目前webview方式集成已经不再维护,离线打包建议使用默认的方式集成。

该问题目前已经被锁定, 无法添加新回复