代码之家  ›  专栏  ›  技术社区  ›  Driss Bounouar

编程关闭间隙广告

  •  11
  • Driss Bounouar  · 技术社区  · 11 年前

    我想确保使用Android AdMob SDK的Android上的间隙广告可以关闭。 经过一些研究,我觉得这是不可能的,因为广告是一个单独的活动。 我想做的是在5秒钟后关闭广告。 有人可以向我保证,关闭一个中间广告是不可能的,或者如果有黑客入侵?

    4 回复  |  直到 6 年前
        1
  •  15
  •   gprathour davidbuzatto    10 年前

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

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

    当您按下后退按钮时,间隙广告将关闭,因此启动后退按钮事件将最终关闭间隙广告。休息取决于要求。

        2
  •  4
  •   Goran Horia Mihail    5 年前

    您可以获得Admob Interstial活动的参考,并致电 finish() 当您想要关闭它时,通过实现 ActivityLifecycleCallbacks :

    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
  •  2
  •   William    11 年前

    不可能通过程序关闭间隙广告。

        4
  •  0
  •   NBApps    6 年前

    对于新读者。 使用:

    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());
    
            }