首页 > 解决方案 > 应用退出后停止显示插页式广告?

问题描述

我最近收到一封来自谷歌开发者支持的电子邮件,说我的应用已被拒绝,并且由于违反政策而未发布,更具体地说是“用户退出应用后出现的插页式广告”。所以我想要在应用程序关闭后阻止这个烦人的插页式广告出现。我很感激你能帮我解决这个问题。您将在下面找到我的 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);
        }
    }
}

标签: androidinterstitial

解决方案


例如,您需要在广告显示后放置一个对话框或其他东西,然后关闭应用程序。

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

推荐阅读