android - 应用退出后停止显示插页式广告?
问题描述
我最近收到一封来自谷歌开发者支持的电子邮件,说我的应用已被拒绝,并且由于违反政策而未发布,更具体地说是“用户退出应用后出现的插页式广告”。所以我想要在应用程序关闭后阻止这个烦人的插页式广告出现。我很感激你能帮我解决这个问题。您将在下面找到我的 HomeActivity 代码,它强调了问题所在。
这是我的家庭活动代码:
//import com.google.ads.AdRequest;
public class HomeActivity extends AppCompatActivity {
ViewPager Tab;
ActionBar actionBar;
//popup window
Dialog myDialog;
private InterstitialAd mInterstitialAd;
boolean exitApp = false;
// new
BottomNavigationView bottomNavigationView;
//This is our viewPager
private ViewPager viewPager;
//Fragments
AboutFragment aboutFragment;
AndoidFragment andoidFragment;
BlogFragment blogFragment;
MenuItem prevMenuItem;
// emd of new
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
lunchInter();
loadInterstitial();
//popup Window
myDialog = new Dialog(this);
ImageButton Contact;
Contact = (ImageButton) findViewById(R.id.popupContact);
Contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ShowContactUs();
}
});
//Initializing viewPager
viewPager = (ViewPager) findViewById(R.id.viewpager);
//Initializing the bottomNavigationView
bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_home:
viewPager.setCurrentItem(0);
break;
/* case R.id.action_articals:
viewPager.setCurrentItem(1);
break;*/
case R.id.action_about:
viewPager.setCurrentItem(2);
break;
}
return false;
}
});
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (prevMenuItem != null) {
prevMenuItem.setChecked(false);
}
else
{
bottomNavigationView.getMenu().getItem(0).setChecked(false);
}
Log.d("page", "onPageSelected: "+position);
bottomNavigationView.getMenu().getItem(position).setChecked(true);
prevMenuItem = bottomNavigationView.getMenu().getItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
/* //Disable ViewPager Swipe
viewPager.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
return true;
}
});
*/
setupViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
andoidFragment =new AndoidFragment();
// blogFragment =new BlogFragment();
aboutFragment =new AboutFragment();
adapter.addFragment(andoidFragment);
// adapter.addFragment(blogFragment);
adapter.addFragment(aboutFragment);
viewPager.setAdapter(adapter);
}
private void lunchInter()
{
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-xxxxxxx");
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
showAdInter();
}
@Override
public void onAdFailedToLoad(int errorCode){
String message = String.format("onAdFailedToLoad (*a)", getErrorReason(errorCode));
}
@Override
public void onAdClosed(){
if(exitApp)
finish();
}
});
}
private void showAdInter(){
if(mInterstitialAd.isLoaded())
{
mInterstitialAd.show();
}
else
{
Log.d("","Inter ad was not ready to be shown");
}
}
public void loadInterstitial()
{
AdRequest adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("")
.build();
mInterstitialAd.loadAd(adRequest);
}
private String getErrorReason(int errorCode){
String errorReason = "";
switch (errorCode){
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
errorReason = "Internal Error";
break;
case AdRequest.ERROR_CODE_INVALID_REQUEST:
errorReason = "Invalid Request";
break;
case AdRequest.ERROR_CODE_NETWORK_ERROR:
errorReason = "Network Error";
break;
case AdRequest.ERROR_CODE_NO_FILL:
errorReason = "No Fill";
break;
}
return errorReason;
}
@Override
public void onBackPressed(){
lunchInter();
loadInterstitial();
finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void Showpopup(){
TextView textclose;
Button btnWebsite;
myDialog.setContentView(R.layout.popupwindow);
textclose = (TextView) myDialog.findViewById(R.id.closeBtn);
btnWebsite = (Button) myDialog.findViewById(R.id.btnSend);
textclose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDialog.dismiss();
}
});
btnWebsite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String URL = "";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(URL));
startActivity(i);
}
});
myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
myDialog.show();
}
public void ShowContactUs(){
Intent i = new Intent(this,ContactUs.class);
startActivity(i);
/* myDialog.setContentView(R.layout.showcontactus);
myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
myDialog.show();*/
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.action_settings:
Showpopup();
return true;
case R.id.contact_us:
ShowContactUs();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
解决方案
例如,您需要在广告显示后放置一个对话框或其他东西,然后关闭应用程序。
mInterstitialAd.setAdListener(new AdListener() {
...
public void onAdClosed() {
confirmaSair();
}
.....
public void confirmaSair(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.confirmacao));
builder.setMessage(getString(R.string.deseja));
builder.setPositiveButton(getString(R.string.sim), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
finish();
}
});
builder.setNegativeButton(getString(R.string.cancelar), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
alerta.cancel();
alerta.dismiss();
}
});
alerta = builder.create();
alerta.show();
}
推荐阅读
- python - 在字符串中的特定单词之后找到数字(或字符)
- java - Null Getter,拆分时抛出异常
- java - OpenAPI - 为不断变化的 api 生成服务器代码?
- angular - 为什么是
渲染另一个 在其中,其中包含我的路由组件? - restsharp - RestRequest.AddFileBytes 发布损坏的文件
- python - 如何从 csv 文件加载用户名?
- docker - 在 docker 中启用 squashfs
- powershell - 组合 PowerShell 命令
- python - 根据其他条件循环使用 1 和 0 填充新列的数据框
- bash - 让我们在 Bash 中加密 SSL