Correctly disable AdMob ads
I also wanted to give users the ability to disable ads - why force people to see them if they don't want to? and why should you expect people to pay for that option?
Anyway, I outlined how I did this in this article. The article goes into more detail but here's the relevant parts:
The code i use to turn off ads:
private void hideAd() {
final AdView adLayout = (AdView) findViewById(R.id.adView1);
runOnUiThread(new Runnable() {
@Override
public void run() {
adLayout.setEnabled(false);
adLayout.setVisibility(View.GONE);
}
});
}
And to turn them back on (in case anyone was feeling generous)
private void showAd() {
final AdView adLayout = (AdView) findViewById(R.id.adView1);
runOnUiThread(new Runnable() {
@Override
public void run() {
adLayout.setEnabled(true);
adLayout.setVisibility(View.VISIBLE);
adLayout.loadAd(new AdRequest());
}
});
}
In your layout file (eg, main.xml) :
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/adsContainer">
<com.admob.android.ads.AdView
android:id="@+id/admobAds"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:backgroundColor="#000000"
app:primaryTextColor="#FFFFFF"
app:secondaryTextColor="#CCCCCC">
</LinearLayout>
Then in your code (eg, inside a "if" block)
(LinearLayout) adscontainer = (LinearLayout) findViewById(R.id.adsContainer);
View admobAds = (View) findViewById(R.id.admobAds);
adscontainer.removeView(admobAds);
This will "permanently" (for the lifecycle of the app) remove the ads from the layou, which means that there will not be any ads requested.