2017-03-08 30 views
0

我剛剛接觸android,最近我開發了一個在WebView上運行的應用程序,意味着我的活動中放置了一個webview,通過html,js頁面加載webview來完成gamin活動。如何從Web視圖加載插頁式廣告

這裏我的要求是「如何從網頁文件加載插頁式廣告(HTML,JS),我用Google搜索最相關的離子應用程序的建議,但我的應用程序是AndroidStudio相關。 所以請幫助

回答

0

打招呼這是代碼....

import android.os.Bundle; import android.view.Window; import android.view.WindowManager; 
 
import android.support.v7.app.AppCompatActivity; 
 
import android.webkit.WebSettings; 
 
import android.webkit.WebView; 
 
import android.webkit.WebViewClient; 
 

 
import com.google.android.gms.ads.AdListener; 
 
import com.google.android.gms.ads.AdRequest; 
 
import com.google.android.gms.ads.AdView; 
 
import com.google.android.gms.ads.InterstitialAd; 
 

 
public class a4 extends AppCompatActivity { 
 

 
    AdView mAdView; 
 
    InterstitialAd mInterstitialAd; 
 
    WebView WebViewWithCSS; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
 
     setContentView(R.layout.activity_a4); 
 

 
     WebViewWithCSS = (WebView)findViewById(R.id.webView); 
 

 
     WebSettings webSetting = WebViewWithCSS.getSettings(); 
 
     webSetting.setJavaScriptEnabled(true); 
 

 
     WebViewWithCSS.setWebViewClient(new WebViewClient()); 
 
     WebViewWithCSS.loadUrl("file:///android_asset/4.html"); 
 

 
     mAdView = (AdView) findViewById(R.id.adView); 
 
     AdRequest adRequest = new AdRequest.Builder() 
 
       .build(); 
 
     mAdView.loadAd(adRequest); 
 

 
     mInterstitialAd = new InterstitialAd(this); 
 

 
     // set the ad unit ID 
 
     mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen)); 
 

 
     adRequest = new AdRequest.Builder() 
 
       .build(); 
 

 
     // Load ads into Interstitial Ads 
 
     mInterstitialAd.loadAd(adRequest); 
 

 
     mInterstitialAd.setAdListener(new AdListener() { 
 
      public void onAdLoaded() { 
 
       showInterstitial(); 
 
      } 
 
     }); 
 
    } 
 

 
    @Override 
 
    public void onPause() { 
 
     if (mAdView != null) { 
 
      mAdView.pause(); 
 
     } 
 
     super.onPause(); 
 
    } 
 

 
    @Override 
 
    public void onResume() { 
 
     super.onResume(); 
 
     if (mAdView != null) { 
 
      mAdView.resume(); 
 
     } 
 
    } 
 

 
    @Override 
 
    public void onDestroy() { 
 
     if (mAdView != null) { 
 
      mAdView.destroy(); 
 
     } 
 
     super.onDestroy(); 
 
    } 
 

 

 
    private void showInterstitial() { 
 
     if (mInterstitialAd.isLoaded()) { 
 
      mInterstitialAd.show(); 
 
     } 
 
    } 
 
}

+0

Hai Raman,感謝您的回覆,但在上面的webview和活動之間的溝通。在我看來,我需要加載和InterstitialAd時,從webview中引發事件。上面的代碼沒有任何這樣的交流。 – RamBen

0

從加載的WebView的廣告不是那麼簡單,但可以這樣做。因此,讓我們採取以下爲例e:

class MainActivity extends AppCompatActivity { 
    protected InterstitialAd mInterstitialAd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // load interstitial ad 
    mInterstitialAd = new InterstitialAd(getContext()); 
    mInterstitialAd.setAdUnitId("YOUR_AD_ID"); 
    mInterstitialAd.loadAd(new AdRequest.Builder().build()); 

    WebView browser = findViewById(R.id.webview); 
    browser.addJavascriptInterface(new InterceptorJavaScript(context), "Interceptor"); 

    WebSettings webSettings = browser.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setDomStorageEnabled(true); 

    browser.setWebViewClient(new CapturingWebViewClient()); 

    browser.loadUrl("http://website.com"); 
    } 

    /** 
    * This class will handle all JS events from the UI back to 
    * Java code and will trigger the Interstitial ad 
    */ 
    private class InterceptorJavaScript { 
    Context webViewContext; 

    /** 
    * Instantiate the interface and set the context 
    */ 
    InterceptorJavaScript(Context webView) { 
     webViewContext = webView; 
    } 

    @JavascriptInterface 
    @SuppressWarnings("unused") 
    public void startInterstitial() { 
     // we need to run it on the main UI thread 
     Handler mHandler = new Handler(Looper.getMainLooper()); 
     mHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      if (MainActivity.mInterstitialAd.isLoaded()) { 
      MainActivity.mInterstitialAd.show(); 
      } 
      // preload new ad 
      BrowserFragment.mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
     } 
     }); 
    } 
    } 

    private class CapturingWebViewClient extends WebViewClient { 
    /** 
    * This method will inject the JavaScritp that will trigger 
    * your Java code and show the interstitial in the main UI thread 
    */ 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     view.loadUrl(
      "javascript:Interceptor.startInterstitial();" 
     ); 
     // Attach JS event to your button so you can call the JS function. I've used jQuery just for simplicity 
     view.loadUrl(
      "javascript:$('#btn').on('click', function(){ Interceptor.startInterstitial(); });" 
     ); 
    } 
    } 
}