我有一个简单的webview Android应用程序,我想在webview的页面之间显示admob非页内广告。
我正在使用此代码:
public class MainActivity extends Activity {
String url = "http://somepage.com";
Boolean showProgressOnSplashScreen = true;
WebView mWebView;
ProgressBar prgs;
RelativeLayout splash, main_layout;
private InterstitialAd mInterstitialAd;
@SuppressWarnings("deprecation")
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-somenumbers38485838373");
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
mInterstitialAd.loadAd(adRequest);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
// Call displayInterstitial() function
//displayInterstitial();
}
});
getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
Window.PROGRESS_VISIBILITY_ON);
mWebView = (WebView) findViewById(R.id.wv);
prgs = (ProgressBar) findViewById(R.id.progressBar);
main_layout = (RelativeLayout) findViewById(R.id.main_layout);
// splash screen View
if (!showProgressOnSplashScreen)
((ProgressBar) findViewById(R.id.progressBarSplash)).setVisibility(View.GONE);
splash = (RelativeLayout) findViewById(R.id.splash);
mWebView.loadUrl(url);
mWebView.setFocusable(true);
mWebView.setFocusableInTouchMode(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setDatabasePath(
this.getFilesDir().getPath() + this.getPackageName()
+ "/databases/");
mWebView.getSettings().setSupportMultipleWindows(true);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
else {
view.loadUrl(url);
}
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (prgs.getVisibility() == View.GONE) {
prgs.setVisibility(View.VISIBLE);
}
displayInterstitial();
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (prgs.getVisibility() == View.VISIBLE)
prgs.setVisibility(View.GONE);
// check if splash is still there, get it away!
if (splash.getVisibility() == View.VISIBLE)
splash.setVisibility(View.GONE);
// slideToBottom(splash);
}
});
}
@Override
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void displayInterstitial() {
// If Ads are loaded, show Interstitial else show nothing.
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
}
所以,现在我正在displayInterstitial()
内加载onPageStarted
功能。
它在加载应用程序上的第一页后加载广告,但之后它在下一页上不再显示。
我如何解决这个问题,以便其他网页之间有更多广告?
我在Admob上设置了一个上限,每3分钟只展示1个广告,但我的会话时间超过20分钟,所以只展示1个广告是浪费。
答案 0 :(得分:0)
显示你的加载onload
请求您的添加加载到displayInterstitial
public void displayInterstitial() {
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd.loadAd(adRequest);
}
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
mInterstitialAd.show();
}
@Override
public void onAdClosed() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
displayInterstitial();
}
}, 3000);
}
});