Java 如何在奖励后自动关闭奖励广告[Android Studio]
所以我试图让它在奖励用户后自动关闭广告,这就是我目前得到的 请记住,我对android studio和整个java都是新手。如果它们是间隔的,则采用不同的方法Java 如何在奖励后自动关闭奖励广告[Android Studio],java,android-studio,Java,Android Studio,所以我试图让它在奖励用户后自动关闭广告,这就是我目前得到的 请记住,我对android studio和整个java都是新手。如果它们是间隔的,则采用不同的方法 private RewardedVideoAd mAd; AdView adView; void init_admob(){ adView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().setRequ
private RewardedVideoAd mAd;
AdView adView;
void init_admob(){
adView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().setRequestAgent("android_studio:ad_template").build();
adView.loadAd(adRequest);
mAd = MobileAds.getRewardedVideoAdInstance(this);
mAd.setRewardedVideoAdListener(this);
loadRewardedVideoAd();
}
public void onRewarded(RewardItem reward) {
Toast.makeText(this, reward.getAmount()+ " " +getString(R.string.points_received), Toast.LENGTH_SHORT).show();
award(reward.getAmount(),getString(R.string.admob_credit));
exitAd();
}
public void exitAd() {
//dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); Tried But didn't work (No Errors Just didn't work)
//dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)); Tried but didn't work (No Errors Just didn't work)
try {
LinearLayout linLay = (LinearLayout) findViewById(R.id.adView);
linLay.removeView(adView);
} catch (Exception e) {
e.printStackTrace();
}
}
linLay的错误
java.lang.ClassCastException: com.google.android.gms.ads.AdView cannot be cast to android.widget.LinearLayout
因此,我真的不知道还有什么可以尝试,或者在广告获得回报后,如何关闭AdView,也不知道如何安抚任何帮助 我认为这是不可能的。这在法律上也是不对的。当你显示广告时,你应该等待用户单击或取消广告。如果你以编程方式关闭广告,这将意味着你有效地强迫用户取消广告。(这可能对用户有好处,但从广告商的角度考虑)你无法在应用程序中关闭广告,但我已经完成了以下操作
private fun showRewardedVideo() {
if (mRewardedAd.isLoaded) {
mRewardedAd.show(
this,
object : RewardedAdCallback() {
override fun onUserEarnedReward(
rewardItem: RewardItem
) {
Toast.makeText(this@MainActivity, "onUserEarnedReward", Toast.LENGTH_LONG).show()
addCoins(rewardItem.amount)
// come back to ad activity
startActivity(Intent(this@MainActivity, MainActivity2::class.java))
}
您的
adView
和linLay
都参考findViewById(R.id.adView)
。所以linLay.removeView(adView)代码>表示从自身中移除自身,这是不可能的。您必须找到包含adView
的父视图,并在父视图上调用removeView(adView)
。@RickyMo在哪里可以找到此父视图?这是布局文件中包含adView
的视图。或者您可以简单地执行以下操作:((视图组)adView.getParent()).removeView(adView)因此它将是ViewGroup linLay=(ViewGroup)adView.getParent();linLay.removeView(adView)基本上,你可以试试。