如何解决从 AdMob 帐户加载广告时出现问题
我的贴纸应用与测试广告和来自活跃 AdMob 的广告完美搭配。但是,当我最近在 AdMob 上受到限制时,我的应用程序开始出现活动问题,当我从应用程序打开它时,它会在半秒或更短的时间内立即关闭,瞧瞧活动源代码。
请注意,我在此活动中有两个插页式广告 - 横幅已停用
谢谢
package com.maryapps.loveStickers;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.format.Formatter;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.facebook.drawee.view.SimpleDraweeView;
import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
import java.lang.ref.WeakReference;
public class StickerPackDetailsActivity extends AddStickerPackActivity {
/**
* Do not change below values of below 3 lines as this is also used by WhatsApp
*/
public static final String EXTRA_STICKER_PACK_ID = "sticker_pack_id";
public static final String EXTRA_STICKER_PACK_AUTHORITY = "sticker_pack_authority";
public static final String EXTRA_STICKER_PACK_NAME = "sticker_pack_name";
public static final String EXTRA_STICKER_PACK_WEBSITE = "sticker_pack_website";
private InterstitialAd mInterstitialAd;
public static final String EXTRA_STICKER_PACK_EMAIL = "sticker_pack_email";
public static final String EXTRA_STICKER_PACK_PRIVACY_POLICY = "sticker_pack_privacy_policy";
public static final String EXTRA_STICKER_PACK_LICENSE_AGREEMENT = "sticker_pack_license_agreement";
public static final String EXTRA_STICKER_PACK_TRAY_ICON = "sticker_pack_tray_icon";
public static final String EXTRA_SHOW_UP_BUTTON = "show_up_button";
public static final String EXTRA_STICKER_PACK_DATA = "sticker_pack";
private RecyclerView recyclerView;
private GridLayoutManager layoutManager;
private StickerPreviewAdapter stickerPreviewAdapter;
private int numColumns;
private AdView mAdView;
private View addButton;
private View alreadyAddedText;
private StickerPack stickerPack;
private View divider;
private WhiteListCheckAsyncTask whiteListCheckAsyncTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sticker_pack_details);
boolean showUpButton = getIntent().getBooleanExtra(EXTRA_SHOW_UP_BUTTON,false);
stickerPack = getIntent().getParcelableExtra(EXTRA_STICKER_PACK_DATA);
TextView packNameTextView = findViewById(R.id.pack_name);
TextView packPublisherTextView = findViewById(R.id.author);
ImageView packTrayIcon = findViewById(R.id.tray_image);
TextView packSizeTextView = findViewById(R.id.pack_size);
SimpleDraweeView expandedStickerView = findViewById(R.id.sticker_details_expanded_sticker);
//Banner in sticker pack details
/*
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
*/
admobinter2();
addButton = findViewById(R.id.add_to_whatsapp_button);
alreadyAddedText = findViewById(R.id.already_added_text);
layoutManager = new GridLayoutManager(this,1);
recyclerView = findViewById(R.id.sticker_list);
recyclerView.setLayoutManager(layoutManager);
recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(pageLayoutListener);
recyclerView.addOnScrollListener(dividerScrollListener);
divider = findViewById(R.id.divider);
if (stickerPreviewAdapter == null) {
stickerPreviewAdapter = new StickerPreviewAdapter(getLayoutInflater(),R.drawable.sticker_error,getResources().getDimensionPixelSize(R.dimen.sticker_pack_details_image_size),getResources().getDimensionPixelSize(R.dimen.sticker_pack_details_image_padding),stickerPack,expandedStickerView);
recyclerView.setAdapter(stickerPreviewAdapter);
}
packNameTextView.setText(stickerPack.name);
packPublisherTextView.setText(stickerPack.publisher);
packTrayIcon.setimageURI(StickerPackLoader.getStickerAssetUri(stickerPack.identifier,stickerPack.trayImageFile));
packSizeTextView.setText(Formatter.formatShortFileSize(this,stickerPack.getTotalSize()));
addButton.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
request();
addStickerPackToWhatsApp(stickerPack.identifier,stickerPack.name);
}
});
if (getSupportActionBar() != null) {
getSupportActionBar().setdisplayHomeAsUpEnabled(showUpButton);
getSupportActionBar().setTitle(showUpButton ? getResources().getString(R.string.title_activity_sticker_pack_details_multiple_pack) : getResources().getQuantityString(R.plurals.title_activity_sticker_packs_list,1));
}
findViewById(R.id.sticker_pack_animation_indicator).setVisibility(stickerPack.animatedStickerPack ? View.VISIBLE : View.GONE);
}
private void launchInfoActivity(String publisherWebsite,String publisherEmail,String privacyPolicyWebsite,String licenseAgreementWebsite,String trayIconUriString) {
Intent intent = new Intent(StickerPackDetailsActivity.this,StickerPackInfoActivity.class);
intent.putExtra(StickerPackDetailsActivity.EXTRA_STICKER_PACK_ID,stickerPack.identifier);
intent.putExtra(StickerPackDetailsActivity.EXTRA_STICKER_PACK_WEBSITE,publisherWebsite);
intent.putExtra(StickerPackDetailsActivity.EXTRA_STICKER_PACK_EMAIL,publisherEmail);
intent.putExtra(StickerPackDetailsActivity.EXTRA_STICKER_PACK_PRIVACY_POLICY,privacyPolicyWebsite);
intent.putExtra(StickerPackDetailsActivity.EXTRA_STICKER_PACK_LICENSE_AGREEMENT,licenseAgreementWebsite);
intent.putExtra(StickerPackDetailsActivity.EXTRA_STICKER_PACK_TRAY_ICON,trayIconUriString);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onoptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_info && stickerPack != null) {
Uri trayIconUri = StickerPackLoader.getStickerAssetUri(stickerPack.identifier,stickerPack.trayImageFile);
launchInfoActivity(stickerPack.publisherWebsite,stickerPack.publisherEmail,stickerPack.privacyPolicyWebsite,stickerPack.licenseAgreementWebsite,trayIconUri.toString());
return true;
}
return super.onoptionsItemSelected(item);
}
private final ViewTreeObserver.OnGlobalLayoutListener pageLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
setNumColumns(recyclerView.getWidth() / recyclerView.getContext().getResources().getDimensionPixelSize(R.dimen.sticker_pack_details_image_size));
}
};
private void setNumColumns(int numColumns) {
if (this.numColumns != numColumns) {
layoutManager.setSpanCount(numColumns);
this.numColumns = numColumns;
if (stickerPreviewAdapter != null) {
stickerPreviewAdapter.notifyDataSetChanged();
}
}
}
private final RecyclerView.OnScrollListener dividerScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull final RecyclerView recyclerView,final int newState) {
super.onScrollStateChanged(recyclerView,newState);
updateDivider(recyclerView);
}
@Override
public void onScrolled(@NonNull final RecyclerView recyclerView,final int dx,final int dy) {
super.onScrolled(recyclerView,dx,dy);
updateDivider(recyclerView);
}
private void updateDivider(RecyclerView recyclerView) {
boolean showDivider = recyclerView.computeVerticalScrollOffset() > 0;
if (divider != null) {
divider.setVisibility(showDivider ? View.VISIBLE : View.INVISIBLE);
}
}
};
public void request(){
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this,getString(R.string.admobinter),adRequest,new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
// The mInterstitialAd reference will be null until
// an ad is loaded.
mInterstitialAd = interstitialAd;
if (mInterstitialAd != null) {
mInterstitialAd.show(StickerPackDetailsActivity.this);
}
mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
@Override
public void onAddismissedFullScreenContent() {
// Called when fullscreen content is dismissed.
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when fullscreen content Failed to show.
Log.d("TAG","The ad Failed to show.");
}
@Override
public void onAdShowedFullScreenContent() {
// Called when fullscreen content is shown.
// Make sure to set your reference to null so you don't
// show it a second time.
mInterstitialAd = null;
Log.d("TAG","The ad was shown.");
}
});
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error
mInterstitialAd = null;
}
});
}
@Override
protected void onResume() {
super.onResume();
whiteListCheckAsyncTask = new WhiteListCheckAsyncTask(this);
whiteListCheckAsyncTask.execute(stickerPack);
}
private InterstitialAd m2InterstitialAd;
public void admobinter2(){
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this,getString(R.string.admobinter2),new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
// The m2InterstitialAd reference will be null until
// an ad is loaded.
m2InterstitialAd = interstitialAd;
m2InterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
@Override
public void onAddismissedFullScreenContent() {
// Called when fullscreen content is dismissed.
finish();
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when fullscreen content Failed to show.
Log.d("TAG","The ad Failed to show.");
finish();
}
@Override
public void onAdShowedFullScreenContent() {
// Called when fullscreen content is shown.
// Make sure to set your reference to null so you don't
// show it a second time.
m2InterstitialAd = null;
Log.d("TAG","The ad was shown.");
}
});
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error
finish();
m2InterstitialAd = null;
}
});
}
@Override
protected void onPause() {
super.onPause();
if (whiteListCheckAsyncTask != null && !whiteListCheckAsyncTask.isCancelled()) {
whiteListCheckAsyncTask.cancel(true);
}
}
@Override
public void onBackpressed() {
if (m2InterstitialAd != null) {
m2InterstitialAd.show(StickerPackDetailsActivity.this);
}
}
private void updateAddUI(Boolean isWhitelisted) {
if (isWhitelisted) {
addButton.setVisibility(View.GONE);
alreadyAddedText.setVisibility(View.VISIBLE);
findViewById(R.id.sticker_pack_details_tap_to_preview).setVisibility(View.GONE);
} else {
addButton.setVisibility(View.VISIBLE);
alreadyAddedText.setVisibility(View.GONE);
findViewById(R.id.sticker_pack_details_tap_to_preview).setVisibility(View.VISIBLE);
}
}
static class WhiteListCheckAsyncTask extends AsyncTask<StickerPack,Void,Boolean> {
private final WeakReference<StickerPackDetailsActivity> stickerPackDetailsActivityWeakReference;
WhiteListCheckAsyncTask(StickerPackDetailsActivity stickerPackListActivity) {
this.stickerPackDetailsActivityWeakReference = new WeakReference<>(stickerPackListActivity);
}
@Override
protected final Boolean doInBackground(StickerPack... stickerPacks) {
StickerPack stickerPack = stickerPacks[0];
final StickerPackDetailsActivity stickerPackDetailsActivity = stickerPackDetailsActivityWeakReference.get();
if (stickerPackDetailsActivity == null) {
return false;
}
return WhitelistCheck.isWhitelisted(stickerPackDetailsActivity,stickerPack.identifier);
}
@Override
protected void onPostExecute(Boolean isWhitelisted) {
final StickerPackDetailsActivity stickerPackDetailsActivity = stickerPackDetailsActivityWeakReference.get();
if (stickerPackDetailsActivity != null) {
stickerPackDetailsActivity.updateAddUI(isWhitelisted);
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。