【问题标题】:How to call admob Interstitial ad from android webview JavascriptInterface如何从 android webview JavascriptInterface 调用 admob 插页式广告
【发布时间】:2017-08-16 13:05:37
【问题描述】:

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

【问题讨论】:

    标签: javascript android webview admob interstitial


    【解决方案1】:

    上述问题的解决方案
    导入所有需要的包。

    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 调用

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

    【讨论】:

      【解决方案2】:

      我在没有像这样的 javascript 调用的情况下使用它:

      @Override
                  public void onAdLoaded(){
                      displayLoadedAd();
      
                  }
      

      您需要将插页式广告的数量减少到您的偏好。在您的 admob 控制台中。

      【讨论】:

      • 是的,我们在不从 js 调用的情况下显示添加。但我的要求是在按下某个按钮时显示广告。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      相关资源
      最近更新 更多