【问题标题】:Android : AdMob onClickListenerAndroid : AdMob onClickListener
【发布时间】:2012-03-12 10:18:13
【问题描述】:

我在我的 Android 应用程序中显示 AdMob 的 横幅。我希望当用户单击它消失的横幅时。我已经尝试了代码AdView.setOnClickListener,但它不起作用...

编辑:这是代码

private void visual_banner(){
//##### Pubblicità #####
        //Create the adView    
        adView = new AdView(this, AdSize.BANNER, "a14e5bed604ebf8");   
        // Lookup your LinearLayout assuming it’s been given    
        // the attribute android:id="@+id/mainLayout"    
        LinearLayout layout = (LinearLayout)findViewById(R.id.layout_ads_streaming);    
        // Add the adView to it    
        layout.addView(adView); 
        // Initiate a generic request to load it with an ad    
        adView.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0) {
                adView.destroy();
                img.setVisibility(View.VISIBLE);
            }
        });
        adView.loadAd(new AdRequest());
        //### FINE PUBBLICITA'
}

【问题讨论】:

  • 也许您想向我们展示您的尝试,以便我们看看是否有问题。
  • 我已经编辑了我的问题并插入了代码

标签: android click admob banner


【解决方案1】:

尝试使用 AdMob 的 adListener 来监听事件。

public interface AdListener {
  public void onReceiveAd(Ad ad);
  public void onFailedToReceiveAd(Ad ad, AdRequest.ErrorCode error);
  public void onPresentScreen(Ad ad);
  public void onDismissScreen(Ad ad);
  public void onLeaveApplication(Ad ad);
}

让你的类实现监听器,然后将监听器添加到 adView:

adView.setAdListener(this);

实现 onDismissScreen 事件,该事件会在您的应用在处理完广告点击后恢复控制时发生。此时,您可以移除 AdView,您将获得点击的功劳。

@Override
public void onDismissScreen(Ad ad) {
  if (adView != null) {
    adView.destroy();
  }
}

【讨论】:

    【解决方案2】:

    我可以帮助您添加 AdWhirl。

    我已经看过来源并做了下一步:

    public class AdWhirlLayoutCustom extends AdWhirlLayout {
    
    public AdWhirlLayoutCustom(Activity context, String keyAdWhirl) {
        super(context, keyAdWhirl);
    }
    
    public AdWhirlLayoutCustom(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    
    // We intercept clicks
    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        boolean result = super.onInterceptTouchEvent(event);
        switch (event.getAction()) {
    
        case MotionEvent.ACTION_DOWN:
                        // Click!
            break;
        }
    
        return result;
    }
    

    }

    【讨论】:

    • 如果你拦截了点击事件并隐藏了广告,你将不会获得广告点击的功劳,这违背了展示广告的初衷。
    【解决方案3】:

    您可以实现 AdListener 接口的 onAdLeftApplication()。当广告离开应用程序(例如,进入浏览器)时调用此方法。

    adView.setAdListener(new AdListener() {

            @Override
            public void onAdLeftApplication ()
            {
               //Do your stuff
            }
        }
    

    });

    欲了解更多信息,请查看以下链接 https://developers.google.com/android/reference/com/google/android/gms/ads/AdListener.html#onAdLeftApplication()

    【讨论】:

      【解决方案4】:

      我同意以上所有答案,但我只是扩展答案。我已经完成了如下操作

      AdView 中加载广告,如下所示

      AdView adView = (AdView)findViewById(R.id.adView);
      adView.loadAd(new AdRequest.Builder()
                          .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                          .addTestDevice("your device id")
                          .build());
      

      接下来在 adView 上设置广告侦听器。取一个全局布尔变量,例如isClicked,因此每当用户点击广告并在该页面上切换时,onAdLeftApplication() 方法将被调用,因此将该变量设为 true。当用户点击广告然后重定向到该广告页面时,当前应用将进入 onPause 状态。

      adView.setAdListener(adListener);
      
      com.google.android.gms.ads.AdListener adListener = new AdListener() {
              @Override
              public void onAdClosed() {
                  super.onAdClosed();
              }
      
              @Override
              public void onAdFailedToLoad(int i) {
                  super.onAdFailedToLoad(i);
              }
      
              @Override
              public void onAdLeftApplication() {
                  super.onAdLeftApplication();
                  isClicked = true;
              }
      
              @Override
              public void onAdOpened() {
                  super.onAdOpened();
              }
      
              @Override
              public void onAdLoaded() {
                  super.onAdLoaded();
              }
      
              @Override
              public void onAdClicked() {
                  super.onAdClicked();
              }
      
              @Override
              public void onAdImpression() {
                  super.onAdImpression();
              }
          };
      

      现在每当用户回到当前应用活动时,onResume() 方法就会被调用,所以实现你的其他东西将在那里或如下所示

      @Override
          protected void onResume() {
              super.onResume();
              if (isClicked){
                  isClicked = false;
                  // do your other stuff whatever you want;
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多