Admob实现错误

时间:2011-10-30 19:16:12

标签: android eclipse admob

我遇到了将Admob应用到应用程序中的问题。

这是我的main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />
<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
</LinearLayout>
</LinearLayout>

这是我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.ollidiemaus.testmob"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".TestAdmobActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
        <activity android:name="com.google.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden|orientation"/>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>

最后这是我的活动:

public class TestAdmobActivity extends Activity {
private AdView adView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // Create the adView
adView = new AdView(this, AdSize.BANNER, "a14ead58dc2a456");
// Lookup your LinearLayout assuming it’s been given
// the attribute android:id="@+id/mainLayout"
LinearLayout layout = (LinearLayout)findViewById(R.id.linearLayout1);
// Add the adView to it
layout.addView(adView);
// Initiate a generic request to load it with an ad
adView.loadAd(new AdRequest());}    
@Override
public void onDestroy() {
  adView.destroy();
  super.onDestroy();
}}

现在,当我在AdView中启动应用时出现了一个错误:“您必须在AndroidManifest.xml中使用configChanges声明AdActivity。”

我使用Android 4.0以上3.2但是它无效。 我希望有人能帮助我。

7 个答案:

答案 0 :(得分:60)

答案 1 :(得分:1)

我对类似案例的解决方案是使用

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" />

或者只使用android:targetSdkVersion = 13下

答案 2 :(得分:1)

您还需要在AndroidManifest.xml中设置以下权限。

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

然后,admob可以评估互联网,也可以在没有互联网连接时显示广告。

答案 3 :(得分:0)

您是否还将构建目标设置为高于Android 3.2,即在default.properties中将目标设置为高于android-13?还要确保您使用的是最新版本的SDK。

PS!不要将您的设备ID公开给公众。

答案 4 :(得分:0)

正如您在此处所见,很少有手机安装了3.x.x或更高版本的Android版本

http://developer.android.com/resources/dashboard/platform-versions.html

为什么有人想将他们的应用程序编译成少数手机可以处理的东西?要么我误解了某些东西,要么我需要找一些其他不需要更新Android版本的广告公司。

答案 5 :(得分:0)

使用GoogleAdMobAdsSdk-4.3.1.jar库时会出现上述错误。 我一直都是那个错误,我找到了this demo from Google。 我在本演示中用4.0.3替换了lib 4.3.1,运行正常。

答案 6 :(得分:0)

如果您使用Android Studio和Gradle,则还必须更新build.gradle文件,如下所示:

android {
    compileSdkVersion 17
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 3
        targetSdkVersion 17
    }
...