0

I'm trying to implement Android in app purchase remove ads function. Under my class, I put private boolean isAdsDisabled; and under onCreate, I put

if (isAdsDisabled) {
            AdView adView = (AdView) this.findViewById(R.id.adView);
            adView.setVisibility(View.GONE);
        } else {
            AdView adView = (AdView) this.findViewById(R.id.adView);
            AdRequest adRequest = new AdRequest.Builder().build();
            adView.loadAd(adRequest);
        }

This is my OnIabPurchaseFinishedListener

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
            = new IabHelper.OnIabPurchaseFinishedListener() {
        public void onIabPurchaseFinished(IabResult result,
                                          Purchase purchase)
        {
            if (result.isFailure()) {
                // Handle error
                return;
            }
            else if (purchase.getSku().equals(ITEM_SKU)) {
                removeAds();
            }

        }
    };

My removeAds()

private void removeAds() {
        AdView adView = (AdView) this.findViewById(R.id.adView);
        adView.setVisibility(View.GONE);
        isAdsDisabled = true;
    }

After successful purchase, I manage to hide the ads. However the problem after I restart my app, the ads reappear. Seem like it can't save the boolean isAdsDisabled = true. How to fix this?

user2872856
  • 2,003
  • 2
  • 21
  • 54
  • you should permanent save value of in app purchase in db or server then further use because Boolean is temporary.It can not access after destroy the activity – Saveen Aug 17 '16 at 06:39
  • But there is someone managed to do it using boolean: http://www.tutorialsface.com/2016/05/implementing-remove-ads-in-app-purchases-in-android-tutorial-example/ – user2872856 Aug 17 '16 at 06:42
  • but just think from where you get value of boolean after destroy the activity. It is not save any where – Saveen Aug 17 '16 at 06:44
  • 1
    Use a shared preference for this. Save the Boolean as true as soon as you purchase the sku. And retrieve the preference value on oncreate . Here is an eg:http://stackoverflow.com/questions/10786172/android-getdefaultsharedpreferences – Sunil Sunny Aug 17 '16 at 06:44
  • @user2872856 In the link you have provided.It will always return from this line if (result.isFailure()) and the error will be "you already own this item" . – Sunil Sunny Aug 17 '16 at 06:49

1 Answers1

1

Solved this using SharedPreferences.

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        boolean isAdsDisabled = settings.getBoolean("isAdsDisabled", false);

        if (isAdsDisabled) {
            AdView adView = (AdView) this.findViewById(R.id.adView);
            adView.setVisibility(View.GONE);
        } else {
            AdView adView = (AdView) this.findViewById(R.id.adView);
            AdRequest adRequest = new AdRequest.Builder().build();
            adView.loadAd(adRequest);
        }

And my removeAds()

private void removeAds() {
        AdView adView = (AdView) this.findViewById(R.id.adView);
        adView.setVisibility(View.GONE);
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean("isAdsDisabled", true);
        editor.commit();
    }
user2872856
  • 2,003
  • 2
  • 21
  • 54