Android 活动在库中时让AdView工作的问题
所以我有一个项目(模块,因为我使用IntelliJ,但我将使用Eclipse术语)和活动(我们称之为X),它加载一个AdView,并且一切正常。现在我有另一个活动(我们称之为Y),它在某些操作之后打开,该活动位于库项目中。活动Y打开得很好,运行得很好,但是我添加到其中的AdView中没有任何内容,它只是一片空白。以下是我在日志上看到的一些奇怪消息:Android 活动在库中时让AdView工作的问题,android,admob,Android,Admob,所以我有一个项目(模块,因为我使用IntelliJ,但我将使用Eclipse术语)和活动(我们称之为X),它加载一个AdView,并且一切正常。现在我有另一个活动(我们称之为Y),它在某些操作之后打开,该活动位于库项目中。活动Y打开得很好,运行得很好,但是我添加到其中的AdView中没有任何内容,它只是一片空白。以下是我在日志上看到的一些奇怪消息: I/Ads﹕ Starting ad request. I/webclipboard﹕ clipservice: android.sec.cli
I/Ads﹕ Starting ad request.
I/webclipboard﹕ clipservice: android.sec.clipboard.ClipboardExManager@4293f940
W/ResourceType﹕ Requesting resource 0x7f0b000e failed because it is complex
E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
I/Adreno200-EGLSUB﹕ <ConfigWindowMatch:2087>: Format RGBA_8888.
onSizeChanged - w:640 h:100
W/ResourceType﹕ Requesting resource 0x7f0b000e failed because it is complex
E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
W/ResourceType﹕ Requesting resource 0x7f0b000e failed because it is complex
E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
下面是我用来创建AdView的代码:
adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId(id);
buttonsAndSeekbarLayout.addView(adView);
final AdRequest.Builder builder = new AdRequest.Builder();
AdRequest adRequest = builder.build();
// Start loading the ad in the background.
adView.loadAd(adRequest);
我还应该提到,我正在该库项目上使用Google Play服务的其他部分,所以我认为它配置正确
谢谢
编辑:我应该提到,即使我在xml上添加adView,它仍然是空的
编辑2:在上面添加了一些额外的消息。我还注意到,在搜索后,这条消息似乎与AdView相关:
D/WebKit﹕ SQLite database failed to load from /FileSyetmQuota.db
EDIT3:我发现了一些奇怪的东西。我在屏幕上添加了应用内购买,当购买完成时,就在我删除广告之前(因为购买),它会在一瞬间显示出来
E/GooglePlayServicesUtil﹕ 未找到Google Play服务资源。检查您的项目配置,以确保包含资源。
。忽略该消息,即使您正确运行GP服务,它也会出现,这不是问题所在AdView
并加载广告的代码部分是完美的,这两个部分都不是问题所在(我在几个项目上运行完全相同的代码,它可以正常工作)- 不知何故,库项目干扰了广告的加载。广告加载有一个超时,如果您正在做一些艰苦的工作,可能没有足够的时间加载广告,广告超时,所以可能这就是为什么您看到等待WebView完成加载的
消息。在这种情况下,请尝试将ad加载放在超时。
(或线程
)中异步任务
- 布局渲染问题。您必须检查广告是否有足够的空间显示,即最小宽度640 x高度100。如果你没有空间,广告就不会出现
线程中运行代码
,请使用以下代码:
new Thread(
new Runnable() {
@Override
public void run() {
adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId(id);
// This will ensure it is run within the main UI.
runOnUiThread(new Runnable() {
public void run() {
buttonsAndSeekbarLayout.addView(adView);
}
});
final AdRequest.Builder builder = new AdRequest.Builder();
AdRequest adRequest = builder.build();
// Start loading the ad in the background.
adView.loadAd(adRequest);
}
}
}).start();
嘿,请尝试加载像下面的例子一样的广告 首先将Google play库更新为4.3 合并广告的最简单方法是简单地定义AdView,就像定义res/layout/main.xml的任何其他部分一样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.ads.AdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="MY_AD_UNIT_ID"
ads:adSize="BANNER"/>
</LinearLayout>
我在代码中调用了
webViewInstance.pauseTimers()
,显然这适用于所有web视图 您的日志显示“启动广告请求”。您还应该有显示“广告请求失败”或“加载广告”或类似内容的日志。你说得对,我还发现了另外两条我以前没见过的信息,但并没有在每个请求中都显示出来<代码>带广告﹕ 无法加载广告:2和W/Ads﹕ 等待WebView完成加载时超时。
我认为关键是“E/GooglePlayServicesUtil”﹕ 找不到Google Play services资源。请检查项目配置以确保包含这些资源。“它们在那里。”。我正在制作一个Chromecast应用程序,这个库大量使用它,它需要Google Play服务,这一部分工作得很好。你的库项目Y是否添加了Google Play服务的内容?谢谢你的帮助,不幸的是大小没有什么区别,我甚至试着给它整个设备的宽度。另外,通过编程添加的广告确实占用了它应该占用的空间,它只是一片空白。关于图书馆,我不知道我可以在里面做些什么来阻止广告加载,该库本身使用play服务处理其他内容,效果很好。首先,我想:试着将动态加载问题中的广告的代码放在线程中,然后试着看看是否加载了广告。如果你需要帮助,我会提供一个例子。所以我试着将其放在一个线程上,但所有的ui都没有操作要求它位于ui线程上,包括loadAd
。我也注意到这条信息很多广告是看不见的。不刷新广告。
但我已尝试调用setVisibility和resume,以确保它正在运行,但不会改变任何内容。请查看我的更新答案。对于您看到的消息,我认为值得一读:但就我而言,AdView刚刚创建,我还没有暂停或做任何事情。我也尝试过xml路由,但没有任何帮助,同样的问题,广告应该在哪里的空白处,我也应该清楚,我知道广告空间被占用了,因为它取代了我线性布局上的其他视图。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.ads.AdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="MY_AD_UNIT_ID"
ads:adSize="BANNER"/>
</LinearLayout>
import com.google.android.gms.ads.*;
public class BannerExample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Look up the AdView as a resource and load a request.
AdView adView = (AdView)this.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
}