【问题标题】:Programmatically close an interstitial ad以编程方式关闭插页式广告
【发布时间】:2014-03-03 11:42:50
【问题描述】:

我想确保可以使用 Android AdMob SDK 关闭 Android 上的插页式广告。 经过一些研究,在我看来这是不可能的,因为广告是一项单独的活动。 我想做的是在 5 秒后关闭广告。 有人可以向我保证关闭插页式广告是不可能的,或者是否存在黑客攻击?

【问题讨论】:

    标签: android admob ads interstitial


    【解决方案1】:

    这将是一个很晚的答案,但我遇到了类似的问题。一个技巧就是以编程方式调用后退按钮事件。

    this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));

    每当您按下后退按钮时,插页式广告就会关闭,因此触发后退按钮事件最终会关闭插页式广告。休息视需求而定。

    【讨论】:

    • 你能分享更多吗?有关如何执行此操作的详细信息。
    【解决方案2】:

    您可以通过实现ActivityLifecycleCallbacks 来获取 Admob 插页式活动的引用并在要关闭它时调用 finish()

    private final Application.ActivityLifecycleCallbacks activityLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
                Log.e(TAG, "onActivityCreated: " + activity.getClass());
            }
    
            @Override
            public void onActivityStarted(@NonNull Activity activity) {
                Log.e(TAG, "onActivityStarted: " + activity.getClass());
            }
    
            @Override
            public void onActivityResumed(@NonNull Activity activity) {
                Log.e(TAG, "onActivityResumed: " + activity.getClass());
            }
    
            @Override
            public void onActivityPaused(@NonNull Activity activity) {
                Log.e(TAG, "onActivityPaused: " + activity.getClass());
            }
    
            @Override
            public void onActivityStopped(@NonNull Activity activity) {
                Log.e(TAG, "onActivityStopped: " + activity.getClass());
            }
    
            @Override
            public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {
                Log.e(TAG, "onActivitySaveInstanceState: " + activity.getClass());
            }
    
            @Override
            public void onActivityDestroyed(@NonNull Activity activity) {
                Log.e(TAG, "onActivityDestroyed: " + activity.getClass());
            }
        };
    
    
    MyApplication.getInstance().registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
    
    
    E/TAG: onActivityCreated: class com.google.android.gms.ads.AdActivity
    E/TAG: onActivityStarted: class com.google.android.gms.ads.AdActivity
    E/TAG: onActivityResumed: class com.google.android.gms.ads.AdActivity
    

    【讨论】:

      【解决方案3】:

      无法以编程方式关闭插页式广告。

      【讨论】:

      • 但是任何破解都是可能的?
      【解决方案4】:

      对于新读者。 使用:

      Intent intent = new Intent(activity, activity.getClass());
                          intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                          activity.startActivity(intent);
      
      
      
              @Override
              public void onAdOpened() {
                  // Code to be executed when the ad is displayed.
                  Log.d("mInterstitialAd", "onAdOpened  ");
                  fullscreenAdShowing = true;
                  new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                      @Override
                      public void run() {
                          if(!fullscreenAdShowing){
                              return;
                          }
                          Log.d("mInterstitialAd", "onAdOpened  Handler 5 seconds run");
                          Intent intent = new Intent(activity, activity.getClass());
                          intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                          activity.startActivity(intent);
      
                      }
                  }, 5000);
              }
      
              @Override
              public void onAdClosed() {
                  // Code to be executed when when the interstitial ad is closed.
                  Log.d("mInterstitialAd", "onAdClosed  loadAd");
                  fullscreenAdShowing = false;
      
                  mInterstitialAd.loadAd(new AdRequest.Builder().build());
      
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多