我正在构建一个基于我个人构建的网站的WebView的简单Android应用程序,所以我只是制作了显示该网站移动版本的移动应用程序。该应用在页面顶部有一个adMob广告,我想在用户登录后隐藏在某些情况下(例如,因为他有不同的帐户类型,并且在登录时无法显示广告)。所以我尝试将addJavascriptInterface用于我的WebView,并在广告需要隐藏时从javascript调用函数,但我无法使其工作。我是Android编程的新手,所以我可能只是缺少一些基本的东西,但我无法在互联网上的任何地方找到答案。这是我的代码: MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdView = (AdView) findViewById(R.id.adView);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
mWebView.addJavascriptInterface(new WebAppInterface(this, mAdView), "Android");
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
absoluteUrl = "myWebSiteUrl";
mWebView.loadUrl(absoluteUrl);
mWebView.setWebViewClient(new MyAppWebViewClient(this, mAdView));
}
}
WebAppInterface:
public class WebAppInterface {
Context mContext;
AdView mAdView;
/** Instantiate the interface and set the context */
WebAppInterface(Context c, AdView mAdView) {
this.mContext = c;
this.mAdView = mAdView;
}
/** Show a toast from the web page and hide the Ad */
@JavascriptInterface
public void hideAd(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
mAdView.setVisibility(View.GONE);
}
}
我页面中的Javascript代码
//..Some variables here
var accountType = 1;
$(document).ready(function() {
if (accountType == 1) {
Android.hideAd('The Ad is now hidden');
}
//Other js functions
在hideAd()中它有效我只显示吐司,但是当我添加
时mAdView.setVisibility(View.GONE);
顶部的广告无法隐藏,页面中的所有javascript代码都不再有效,请帮助我了解我做错了什么。