如何从android webview JavascriptInterface调用admob插页式广告 [英] How to call admob Interstitial ad from android webview JavascriptInterface

查看:32
本文介绍了如何从android webview JavascriptInterface调用admob插页式广告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在从 webview 调用 android Admob interstitial 时遇到了问题.我无法得到任何适当的解决方案.最后,我找到了为 javascript 调用插页式广告的解决方案.看看下面的答案.

I was facing problem for calling android Admob interstitial from webview. I could not get any proper solution. Finally I figured out the solution to call the interstitial for javascript. Look into the below answer.

推荐答案

上述问题的解决方案
导入所有必需的包.

Solution for the above problem
Import all the required packages.

public class MainActivity extends AppCompatActivity {
    WebView myWevView;
    public InterstitialAd mInterstitialAd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();
        setContentView(R.layout.activity_main);

        myWevView =(WebView)findViewById(R.id.myWevView);
        WebSettings ws= myWevView.getSettings();
        ws.setJavaScriptEnabled(true);
        ws.setDomStorageEnabled(true);
        myWevView.getSettings().setUseWideViewPort(true);
        myWevView.addJavascriptInterface(new WebAppInterface(this), "Android");
        myWevView.setWebViewClient(new WebViewClient());
        myWevView.setWebChromeClient(new WebChromeClient());
        myWevView.getSettings().setBuiltInZoomControls(true);
        myWevView.loadUrl("file:///android_asset/index.html");
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());
        mInterstitialAd.setAdListener(new AdListener(){
        @Override
            public void onAdLoaded(){

            }
            @Override
            public void onAdClosed() {
                // Load the next interstitial.
                 mInterstitialAd.loadAd(new AdRequest.Builder().build());
            }
        });

      }




   public void displayLoadedAd(){
       runOnUiThread(new Runnable() {
           public void run() {
               if (mInterstitialAd.isLoaded()) {
                   mInterstitialAd.show();
                   mInterstitialAd.loadAd(new AdRequest.Builder().build());
               }
               else
                   Toast.makeText(getApplicationContext(), "Ad not loded", Toast.LENGTH_SHORT).show();
           }

       });


   }


    public class WebAppInterface {
        Context mContext;
        /** Instantiate the interface and set the context */
        WebAppInterface(Context c) {
            mContext = c;
        }
        @JavascriptInterface
        public void showAdFromJs(){

            Toast.makeText(mContext, "Loading Ad", Toast.LENGTH_SHORT).show();
              displayLoadedAd();
        }
    }
    //Controlling navigation
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if (myWevView.canGoBack()) {
                        myWevView.goBack();
                    }
                    else {
                        finish();
                    }
                    return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }
}

从javascript调用

calling from javascript

$("#btn1").click(function(){
   Android.showAdFromJs();
});

这篇关于如何从android webview JavascriptInterface调用admob插页式广告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆