Android 活动在库中时让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

所以我有一个项目(模块,因为我使用IntelliJ,但我将使用Eclipse术语)和活动(我们称之为X),它加载一个AdView,并且一切正常。现在我有另一个活动(我们称之为Y),它在某些操作之后打开,该活动位于库项目中。活动Y打开得很好,运行得很好,但是我添加到其中的AdView中没有任何内容,它只是一片空白。以下是我在日志上看到的一些奇怪消息:

 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);
       }
    }