我在webchromeclient中设置一个方法,如下所示:
web1.setWebChromeClient(new WebChromeClient() {
public void onHideCustomView(){}
});然后我想创建javascriptinterface来调用onHideCustomView()。如何调用webchromeclient中的方法?我试图使用stacktrace获取方法名,但它只显示匿名内部类"MainActivity$34.onHideCustomView()“
发布于 2018-02-05 01:27:22
你可以在你的类中创建一个私有类来扩展WebChromeClient,例如:
class YourCustomWebChromeClient extends WebChromeClient在这个类中重写方法,如下所示,
@Override
public void onHideCustomView()
{
//add your code when onHideCustomView is called
}然后用这个自定义的chrome客户端来设置你的web1。
web1.setWebChromeClient(YourCustomWebChromeClient);使用YourCustomWebChromeClient对象,现在您可以调用onHideCustomView方法。
发布于 2018-02-05 10:49:50
如果您想为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);https://stackoverflow.com/questions/48610627
复制相似问题