我正在webchromeclient中设置一个方法,如下所示:
web1.setWebChromeClient(new WebChromeClient() {
public void onHideCustomView(){}
});
然后我想创建javascript接口来调用onHideCustomView()。 如何调用webchromeclient中的方法?我试图使用stacktrace获取方法名称,但它只显示匿名内部类“MainActivity $ 34.onHideCustomView()”
答案 0 :(得分:0)
您始终可以在类中创建一个扩展WebChromeClient
的私有类,例如:
class YourCustomWebChromeClient extends WebChromeClient
在此类中覆盖方法,如下所示
@Override
public void onHideCustomView()
{
//add your code when onHideCustomView is called
}
只需使用此自定义Chrome客户端设置web1
。
web1.setWebChromeClient(YourCustomWebChromeClient);
使用YourCustomWebChromeClient
对象,现在可以调用onHideCustomView
方法。
答案 1 :(得分:0)
如果要为js提供接口,请使用以下代码:
public class MyJsInterface {
private WeakReference<View> myTargetView;
public MyJsInterfaceImpl(View view){
this.myTargetView = new WeakReference<>(view);
}
@JavascriptInterface
public void onHideCustomView(){
if(myTargetView.get() != null){
myTargetView.get().post(new Runnable(){
@Override
public run(){
myTargetView.get().setVisibility(View.GONE);
}
});
}
}
}
webview.addJavascriptInterface(myJsInterface, "lovelyAndroid");
在js:
window.lovelyAndroid.onHideCustomView()
不要忘记在webview中启用js:
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);