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