当AdMob加载广告时,为什么我的Android活动会关闭?

时间:2012-12-19 06:51:21

标签: android android-activity admob

我已按照here的说明将AdMob广告放入其他正在运行的Android应用中。该应用程序有2个活动。其中一个只能从第一个到达。我目前正在为第二项活动添加广告。我已经尝试在AdView方法中以编程方式创建onCreate并将相应的代码添加到Activity的XML布局文件中。在这两种情况下,活动都将退出第二个活动并转到第一个活动,就像收到广告后一直按下后退按钮(或至少通过网络获得一些广告数据)。如果我更改代码以便不进行添加请求(即使我以编程方式添加广告但只是不要调用loadAd),或者如果我关闭了netwrok访问权限,那么我看不到任何广告,但我的活动也没有退出。可能导致这种情况的原因是什么?

我已经完成了所有(我相信已过时)步骤here,但这没有用。为了清楚,如果我做错了什么,我有:

  • 下载最新的Android和AdMob SDK,至少截至上周五。
  • 在default.properties中设置'target = android-17'(我必须在项目的根目录中创建,因为我不能正常)和project.properties(这是我认为项目实际使用的)
  • 在AndroidManifest.xml中设置'android:minSdkVersion =“3”'。
  • 将库添加到项目中(将GoogleAdMobAdsSdk-6.2.1.jar放在项目根目录的libs目录中)。
  • 添加了从here复制到AndroidManifest.xml的com.google.ads.AdActivity
  • 添加了对AndroidManifest.xml的权限,再次从同一位置复制。
  • here复制代码和XML标记(和属性)并将它们添加到我的项目中(用我的发布者ID替换MY_AD_UNIT_ID),尽管我也在代码中打破了请求以使模拟器成为测试设备
  • 添加了带广告样式的attrs.xml。我很确定这是过时的建议,但无论如何我都是这样做的。我使用this question中的一个,但我将com.admob.android.ads.AdView更改为com.google.ads

LogCat说,如果你试图帮助我,我想你想知道的下一件事。不多:

09-02 14:33:34.861: I/Ads(12839): adRequestUrlHtml: <html><head><script src="http://media.admob.com/sdk-core-v40.js"></script><script>AFMA_getSdkConstants();AFMA_buildAdURL({"msid":"com.Package.Name","hl":"en","bas_off":0,"simulator":1,"preqs":0,"slotname":"a150cbaa53d9d3d","js":"afma-sdk-a-v6.2.1","isu":"B3EEABB8EE11C2BE770B684D95219ECB","u_audio":4,"cap":"m,a","cipa":0,"u_sd":1.5,"net":"ed","u_h":533,"oar":0,"session_id":"4834854664722735718","seq_num":"1","app_name":"1.android.com.Package.Name","bas_on":0,"kw":[],"u_w":320,"gnt":3,"adtest":"on","format":"320x50_mb","carrier":"310260","ad_pos":{"visible":0,"width":0,"height":0,"x":0,"y":0},"ptime":0});</script></head><body></body></html>
09-02 14:33:35.111: D/dalvikvm(12839): GC freed 8784 objects / 437720 bytes in 64ms
09-02 14:33:37.101: I/Ads(12839): Received ad url: <url: "http://googleads.g.doubleclick.net:80/mads/gma?msid=com.Package.Name&hl=en&bas_off=0&preqs=0&js=afma-sdk-a-v6.2.1&isu=B3EEABB8EE11C2BE770B684D95219ECB&u_audio=4&cap=m%2Ca&cipa=0&u_sd=1.5&net=ed&u_h=533&oar=0&session_id=4834854664722735718&seq_num=1&app_name=1.android.com.Package.Name&bas_on=0&kw&u_w=320&gnt=3&adtest=on&format=320x50_mb&carrier=310260&ptime=0&u_so=p&output=html&region=mobile_app&u_tz=0&client_sdk=1&ex=1&slotname=a14e8f77524dde8&kw_type=broad&gsb=3g&caps=interactiveVideo_th_autoplay_mediation_sdkAdmobApiForAds_di&jsv=41" type: "admob" afmaNotifyDt: "null" useWebViewLoadUrl: "false">
09-02 14:33:37.111: I/Ads(12839): Request scenario: Online server request.
09-02 14:33:38.061: I/jdwp(12861): received file descriptor 10 from ADB
09-02 14:33:38.091: D/ddm-heap(12861): Got feature list request

编辑: 我不认为它会非常有用,但是在suleman khan的请求下,这是我当前的XML

<com.google.ads.AdView android:layout_width="wrap_content"
    android:layout_height="wrap_content" ads:adUnitId="a150cbaa53d9d3d"
    ads:adSize="SMART_BANNER" android:id="@+id/adView" ads:refreshInterval="60" 
    ads:testDevices="TEST_EMULATOR"
    ads:loadAdOnCreate="true" />

我尝试过很多变种,但没有成功。

2 个答案:

答案 0 :(得分:1)

将此代码放在xml:

<com.google.ads.AdView android:id="@+id/adView"
                         android:layout_width="wrap_content"
                         android:layout_alignParentTop="true"
                         android:layout_height="wrap_content"
                         ads:adUnitId="@string/my_publisher_id"
                         ads:adSize="SMART_BANNER"
                         ads:loadAdOnCreate="true"/>

希望您已添加发布商ID。

将您的活动放在清单文件中后将其放置:

<activity android:name="com.google.ads.AdActivity"
              android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

正如您所说,您已在项目的库中添加了jar文件,并希望您也在构建路径中配置它。

希望这有帮助。

答案 1 :(得分:0)

上面的代码可以使用,你也可以删除这些标签

    android:minSdkVersion="8"
    android:targetSdkVersion="8"