Java 如何访问WebChromeClient中的方法?
我正在webchromeclient中设置如下方法:Java 如何访问WebChromeClient中的方法?,java,android,webchromeclient,Java,Android,Webchromeclient,我正在webchromeclient中设置如下方法: web1.setWebChromeClient(new WebChromeClient() { public void onHideCustomView(){} }); 然后我想创建javascriptinterface来调用onHideCustomView()。 如何调用webchromeclient中的方法?我尝试使用stacktrace获取方法名,但它只显示匿名内部类“MainActivity$34.onHideCustomView(
web1.setWebChromeClient(new WebChromeClient() {
public void onHideCustomView(){}
});
然后我想创建javascriptinterface来调用onHideCustomView()。
如何调用webchromeclient中的方法?我尝试使用stacktrace获取方法名,但它只显示匿名内部类“MainActivity$34.onHideCustomView()”您始终可以在类内创建一个私有类,该类扩展了
WebChromeClient
,例如:
class YourCustomWebChromeClient extends WebChromeClient
在这个类中重写方法,如下所示
@Override
public void onHideCustomView()
{
//add your code when onHideCustomView is called
}
只需使用此定制chrome客户端设置您的web1
web1.setWebChromeClient(YourCustomWebChromeClient);
使用
YourCustomWebChromeClient
对象,现在可以调用onHideCustomView
方法。如果要为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");
别忘了在webview中启用js:
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
如果我有多个:web1.setWebChromeClient(YourCustomWebChromeClient);web2.setWebChromeClient(您的自定义WebChromeClient);web3.setWebChromeClient(您的自定义WebChromeClient);如何将web2命名为HideCustomView?
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);