我正在尝试找一种检查横幅(广告)是否已检查的方法,但它更难以接缝。
我试过
adView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO
}
});
但它不起作用(我放了一个调试打印,但它不起作用..)
然后我尝试创建一个包装adView并将侦听器放在线性布局上的LinearLayout,但它仍然无效。
然后我尝试创建一个包含所有显示的更大的布局,并在其中添加了adView。我想在其中放入一个onTouchListener,并检查坐标,检查是否按下了添加。但我真的不明白如何找到我的横幅的正确坐标(我创建了一个获得x和y偏移的方法以及用于放置横幅的重力)来检查,我真的希望存在更好的方法。此外,我发现如果我按下横幅,则不执行该方法,但仅当按下屏幕的其他部分时才会执行。
那么,有什么方法可以了解它吗?我不想知道横幅页面是否已加载,或者是否重定向到市场或浏览器,我只需知道横幅是否被按下。
也许设置一个在触摸屏幕时运行的检查,然后检查是否运行了listner方法,如果没有运行,那么横幅被触摸可以工作,但我不知道如何实现它..
知道怎么做吗?
谢谢
答案 0 :(得分:1)
我不知道为什么其他人没有谈到您使用的是哪个adView? 大多数(就像我所知道的那样)提供了一个你可以提供的监听器,它可以在点击广告时进行回调。
例如,MobFox有setBannerListener(BannerListener listener)
,该侦听器有一个方法adClicked()
。其他提供者(如admob,inmobi,mopub)都有类似的听众可以设置。
这应该是处理这个问题的方法,而不是黑客攻击容器视图。
答案 1 :(得分:1)
对于那些仍然不知道如何:
的人使用AdListener
adView.setAdListener(new AdListener() {
public void onDismissScreen(Ad arg0) {
Toast.makeText(BannerAdListener.this, "Back to app", Toast.LENGTH_SHORT).show();
}
public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
Toast.makeText(BannerAdListener.this, "Error loading", Toast.LENGTH_SHORT).show();
}
public void onLeaveApplication(Ad arg0) {
Toast.makeText(BannerAdListener.this, "Left app", Toast.LENGTH_SHORT).show();
}
public void onPresentScreen(Ad arg0) {
Toast.makeText(BannerAdListener.this, "Sumthin sumthin", Toast.LENGTH_SHORT).show();
}
public void onReceiveAd(Ad arg0) {
Toast.makeText(BannerAdListener.this, "Ad Received", Toast.LENGTH_SHORT).show();
}
});
答案 2 :(得分:0)
您是否尝试过点击事件?
应用程序是否可以编译并运行?
你有重复的ID吗?
答案 3 :(得分:0)
好的,我解决了,因为我失去了相当多的时间来找到解决方案,我在这里发布,以便每个人都可以找到并使用它!
LinearLayout containAdView = null;
if(registerTouch)
{
containAdView = new LinearLayout(pActivity){
public boolean onInterceptTouchEvent(MotionEvent ev)
{
if(ev.getAction() == MotionEvent.ACTION_UP)
{
bannerClicked(pActivity, shared_Prefs_name, shared_Save_name);
if(mainMenu.ISDEV)
{
final Toast tost = Toast.makeText(pActivity, "Banner Clicked", Toast.LENGTH_SHORT);
tost.show();
}
}
return super.onInterceptTouchEvent(ev);
}
};
containAdView.addView(adView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
}