AdMob服务器会注册广告请求,但广告对象包含“必须声明AdActivity”错误

时间:2012-03-09 13:00:42

标签: admob

我一直在尝试将AdMob功能实施到我的项目中并继续打砖墙。我一直在网上研究,并注意到用户看到的类似问题,以及他们的解决方案,但我似乎已经到目前为止,然后不能完全让它工作。我希望有人能够指出我的一些愚蠢的错误!

顺便提一下,我正在测试运行Android 2.3.3的HTC Desire(Bravo)并使用最新的AdMob SDK(4.3.1)。

我可以从我的AdMob帐户中看到服务器正在看到广告请求,但我的应用程序中的广告对象一直声明我需要在清单中声明AdActivity以及configChange参数。两者都在那里!

非常感谢任何帮助。下面是我的代码的相关(煮沸)部分;

=================== AndroidManifest.xml ====================== ===========

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="<my package name>"

<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" 
    android:debuggable="false">

    <activity
    android:label="@string/app_name"
    android:name=".MainActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- AdMob stuff -->
    <activity android:name="com.google.ads.AdActivity"
    android:configChanges="orientation|keyboard|keyboardHidden"/>           

    </application>
</manifest>

====================== MainActivity.java =================== ==============

package my.package.name;

import com.google.ads.AdRequest;
import com.google.ads.AdView;

public class MainActivity extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.choice_layout_main);   

    AdView adView = (AdView) this.findViewById(R.id.adView); 
    AdRequest adRequest = new AdRequest(); 
    adView.loadAd(adRequest); 


    }

}

================ choice_layout_main.xml ========================= =====

<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"     
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:background="@drawable/background_main"
      android:gravity="top"
      android:orientation="vertical"
      android:scrollbarStyle="insideOverlay"
      android:scrollbars="vertical"
      android:textColor="#FFFFFFFF">

    <RelativeLayout
        android:id="@+id/MainLayout"  
        android:padding="50sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.ads.AdView
        android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        ads:backgroundColor="#000000"
        ads:primaryTextColor="#FFFFFF"
        ads:secondaryTextColor="#CCCCCC"
        ads:adSize="BANNER"
        ads:refreshInterval="30"
        ads:adUnitId="<my id>"
        ads:loadAdOnCreate="true"
        />   


      </RelativeLayout>
 </ScrollView>

似乎其他开发者展示的所有其他解决方案对我来说都不太合适,因此我认为它必须是一些我忽视的愚蠢点!

任何帮助对我的理智都有好处!

干杯, 利

1 个答案:

答案 0 :(得分:1)

如果您使用的是4.3.1,您的活动可能需要在configChanges下面添加一些额外的项目,如下所示:

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

另外,如果你这样做并且你没有在project.properties文件中设置目标(假设你有一个3.2或更高的Android SDK,可能需要设置target=android-13或更高版本。)

在博文here中找到此信息。