2013-08-04 47 views
2

我在Android應用程序中使用Admob的插頁式廣告。 interstitialAd.show()在應用程序的某些事件中被調用。一切正常,但廣告的一個惱人的用例。如果用戶點擊Android主頁按鈕,如何自動關閉admob插頁式廣告?

如果用戶在廣告顯示或廣告活動(即用戶點擊廣告)時點擊HOME,則在切換回應用程序後將顯示廣告或廣告活動。我寧願顯示應用程序(即主要活動位於活動堆棧的頂部),因爲它讓用戶首先看到廣告時感到困惑。

我試圖捕獲所有的活動回調(如onStart(),onResume()...),但顯然這個應用程序在這個用例中永遠不會成爲前景。由於廣告活動是通過調用interstitialAd.show()開始的,因此管理活動堆棧的技巧也無濟於事。

有誰知道如何自動關閉廣告並將應用主要活動返回到頂部?

謝謝。

回答

8

如果有人正在尋找這個答案。如果用戶在顯示插頁式廣告時點擊了主頁按鈕,則會阻止用戶再次啓動應用時顯示該按鈕。

在你AndroidMainifest.xml文件中加入: 機器人:noHistory = 「真」 到AdActivity活動

像這樣:

<activity android:name="com.google.android.gms.ads.AdActivity" 
    android:noHistory="true" 
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
</activity> 

這似乎到目前爲止是工作。

+0

爲我工作。謝謝:) –

+0

它沒有爲我工作。 –

0

我不認爲有解決方案。

基本上,Ad.show()需要在新任務中打開廣告,因此它不是當前任務/應用程序的「活動」列表的一部分。

1

這可能太晚了,但無法自動關閉廣告。對此的攻擊是,在onBackPressed()方法中,在用戶點擊後退按鈕關閉廣告後,將用戶返回到應用程序並使用Toast方法,提醒用戶再次單擊後退按鈕以退出應用程序。這種方法也符合Google的建議,即您允許用戶知道哪個應用正在顯示廣告,因此您在最終關閉該應用之前返回應用。就用戶體驗而言,它可能並不是最好的,但它確實能做到這一點。以下是一個示例代碼。

boolean doubleBackToExitPressedOnce = false; 
public void onBackPressed() { 
    if(doubleBackToExitPressedOnce) { 
     super.onBackPressed(); 
     return; 
    } 

    if(backPressAd.isLoaded()) { 
     backPressAd.show(); 
     backPressAd.setAdListener(new AdListener(){ 
      @Override 
      public void onAdClosed() { 
       doubleBackToExitPressedOnce = true; 
       Toast.makeText(getApplicationContext(), "Click BACK again to exit", Toast.LENGTH_LONG).show(); 
       backPressAd.loadAd(new AdRequest.Builder().build()); 
      } 
     }); 
    } else { 
     finish(); 
    } 
} 
相關問題