/* * Copyright (c) 2010, MoPub Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of 'MoPub Inc.' nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.mopub.mobileads; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; import android.view.View; import com.mopub.mobileads.MoPubView.BannerAdListener; public class MoPubActivity extends BaseActivity { public static final int MOPUB_ACTIVITY_NO_AD = 1234; public static final String ACTION_INTERSTITIAL_SHOW = "com.mopub.action.interstitial.show"; public static final String ACTION_INTERSTITIAL_DISMISS = "com.mopub.action.interstitial.dismiss"; private MoPubView mMoPubView; public static final IntentFilter HTML_INTERSTITIAL_INTENT_FILTER; static { HTML_INTERSTITIAL_INTENT_FILTER = new IntentFilter(); HTML_INTERSTITIAL_INTENT_FILTER.addAction(ACTION_INTERSTITIAL_SHOW); HTML_INTERSTITIAL_INTENT_FILTER.addAction(ACTION_INTERSTITIAL_DISMISS); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); broadcastInterstitialAction(ACTION_INTERSTITIAL_SHOW); } @Override public View getAdView() { String adUnitId = getIntent().getStringExtra("com.mopub.mobileads.AdUnitId"); String keywords = getIntent().getStringExtra("com.mopub.mobileads.Keywords"); String clickthroughUrl = getIntent().getStringExtra("com.mopub.mobileads.ClickthroughUrl"); int timeout = getIntent().getIntExtra("com.mopub.mobileads.Timeout", 0); if (adUnitId == null) { throw new RuntimeException("AdUnitId isn't set in com.mopub.mobileads.MoPubActivity"); } mMoPubView = new MoPubView(this); mMoPubView.setAdUnitId(adUnitId); mMoPubView.setKeywords(keywords); mMoPubView.setClickthroughUrl(clickthroughUrl); mMoPubView.setTimeout(timeout); mMoPubView.setBannerAdListener(new BannerAdListener() { @Override public void onBannerLoaded(MoPubView banner) { mMoPubView.adAppeared(); } public void onBannerFailed(MoPubView banner, MoPubErrorCode errorCode) {} public void onBannerClicked(MoPubView banner) {} public void onBannerExpanded(MoPubView banner) {} public void onBannerCollapsed(MoPubView banner) {} }); String source = getIntent().getStringExtra("com.mopub.mobileads.Source"); if (source != null) { source = sourceWithImpressionTrackingDisabled(source); mMoPubView.loadHtmlString(source); } return mMoPubView; } @Override protected void onDestroy() { broadcastInterstitialAction(ACTION_INTERSTITIAL_DISMISS); mMoPubView.destroy(); super.onDestroy(); } private String sourceWithImpressionTrackingDisabled(String source) { // TODO: Temporary fix. Disables impression tracking by renaming the pixel tracker's URL. return source.replaceAll("http://ads.mopub.com/m/imp", "mopub://null"); } private void broadcastInterstitialAction(String action) { Intent intent = new Intent(action); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } }