12

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

4

4 回答 4

14

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

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

每当您按下后退按钮时,插页式广告就会关闭,因此触发后退按钮事件最终会关闭插页式广告。休息取决于要求。

于 2014-11-17T08:40:21.247 回答
4

您可以获得 Admob Interstitial 活动的引用,并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
于 2020-02-28T11:42:25.307 回答
2

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

于 2014-03-04T05:05:44.630 回答
0

对于新读者。利用:

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

        }
于 2018-07-23T10:36:11.357 回答