当javascript调用WebView中的函数时,更改元素的可见性

时间:2015-08-21 13:09:52

标签: java android webview

我正在构建一个基于我个人构建的网站的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代码都不再有效,请帮助我了解我做错了什么。

0 个答案:

没有答案