Cordova 6.2.3 没有 WebChromeClient,如何覆盖 onJsPrompt()?

Posted

技术标签:

【中文标题】Cordova 6.2.3 没有 WebChromeClient,如何覆盖 onJsPrompt()?【英文标题】:Cordova 6.2.3 has no WebChromeClient,how can i override the onJsPrompt()? 【发布时间】:2018-02-10 14:42:57 【问题描述】:

当我将我的项目从 cordova 3 更新到 cordova 6 时,我发现没有 WebChromeClient,但是我的项目使用了这个类并覆盖了 onJsPrompt()。 现在,我应该如何基于 Cordova 6 覆盖 OnJsPrompt()

package com.qtby.gxwlc; import org.apache.cordova.CordovaChromeClient; import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaWebView; import com.jsdemo.ClientTool; import com.jsdemo.JsNativeFunc; import android.content.Intent; import android.webkit.JsPromptResult; import android.webkit.WebView; public class CustomerWebChromeClient extends CordovaChromeClient public CustomerWebChromeClient(CordovaInterface ctx, CordovaWebView app) super(ctx, app); JsNativeFunc jsNativeFunc; public JsNativeFunc getJsNativeFunc() return jsNativeFunc; public boolean isJsNativeFunc(int requestCode) if(jsNativeFunc == null) return false; return jsNativeFunc.isJsNativeFunc(requestCode); public void jsResult(int requestCode, int resultCode, Intent intent) jsNativeFunc.jsResult(requestCode, resultCode, intent); @Override public boolean onJsPrompt(WebView view, String origin, String message, String defaultValue, JsPromptResult result) if(ClientTool.callNativeFunc(message)) return super.onJsPrompt(view, origin, message, defaultValue, result); return true; return super.onJsPrompt(view, origin, message, defaultValue, result);

【问题讨论】:

【参考方案1】:

你现在就这样做。

import org.apache.cordova.engine.SystemWebChromeClient;

extends SystemWebChromeClient

https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/engine/SystemWebChromeClient.java

干杯

【讨论】:

以上是关于Cordova 6.2.3 没有 WebChromeClient,如何覆盖 onJsPrompt()?的主要内容,如果未能解决你的问题,请参考以下文章

android和ios的cordova构建都失败了

没有phonegap\.cordova\config.json

Cordova Android - 相机没有所有选项

没有 Ionic 的设备上的 Cordova 热重载

Phonegap + Eclipse + Cordova -- 没有 config.xml

Cordova build ios 没有通过,我没有收到任何错误。