我遇到了将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但是它无效。 我希望有人能帮助我。
答案 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
}
...