AdView - Missing adActivity with android:configChanges in AndroidManifest.xml

18,062

Solution 1

You need to leave the meta-data tag as is:

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

Additionaly, you need to replace this tag:

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

With this (as suggested in the answer you linked):

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

Since you are using the Google Play Services and not the legacy AdMob SDK you need to replace the name of the activity class from com.google.ads.AdActivity to com.google.android.gms.ads.AdActivity

Solution 2

This may be part of the problem. It seems you are missing....

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

in you AndroidManifest.xml

Solution 3

Make sure you only have the Google Play Services library included and not both Google Play Services and Admob SDK.

It looks like the value of @integer/google_play_services_version is zero. Are the Google Play Services resources being included in your app?

Solution 4

if you are using unity you should use this.

 <!-- Google Mobile Ads Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Share:
18,062
jpgerb
Author by

jpgerb

Updated on June 04, 2022

Comments

  • jpgerb
    jpgerb almost 2 years

    I just set up my app with the Google Play library method of adding adds (AdMob). When I run the emulator the add has the error message:

    Missing adActivity with android:configChanges in AndroidManifest.xml
    

    I located a fix at:

    Missing adActivity with android:configChanges in AndroidManifest.xml

    The fix stated to do the following:

    "com.google.ads.AdActivity" is declared when using the admob sdk jar in the "libs" folder. >It seems you're using admob via the google play services library so change:

    activity android:name="com.google.ads.AdActivity"

    To

    activity android:name="com.google.android.gms.ads.AdActivity"

    Also make sure you add the meta-data tag:

    I tried this and the CatLog said to change the meta tag back to:

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    

    My LogCat:

    02-23 14:30:27.091: E/AndroidRuntime(1278): FATAL EXCEPTION: main
    02-23 14:30:27.091: E/AndroidRuntime(1278): Process: biz.midl.debtcalculator, PID: 1278
    02-23 14:30:27.091: E/AndroidRuntime(1278): java.lang.RuntimeException: Unable to start activity ComponentInfo{biz.midl.debtcalculator/biz.midl.debtcalculator.MainActivity}: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4242000 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.os.Handler.dispatchMessage(Handler.java:102)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.os.Looper.loop(Looper.java:136)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.ActivityThread.main(ActivityThread.java:5017)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at java.lang.reflect.Method.invokeNative(Native Method)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at java.lang.reflect.Method.invoke(Method.java:515)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at dalvik.system.NativeStart.main(Native Method)
    02-23 14:30:27.091: E/AndroidRuntime(1278): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4242000 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.google.android.gms.internal.u.a(Unknown Source)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.google.android.gms.internal.ag.U(Unknown Source)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.google.android.gms.internal.ag.a(Unknown Source)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at com.google.android.gms.ads.AdView.loadAd(Unknown Source)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at biz.midl.debtcalculator.MainActivity.onCreate(MainActivity.java:41)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.Activity.performCreate(Activity.java:5231)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
    02-23 14:30:27.091: E/AndroidRuntime(1278):     ... 11 more
    

    Here is my .java:

    import java.text.DecimalFormat;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdSize;
    import com.google.android.gms.ads.AdView;
    
    public class MainActivity extends Activity {
    
    private AdView adView;
    
    double interestRate;
    double r, r1;
    int nRemaining, nStarting, nDifference, originalBalance,
            outstandingBalance, originalTerm;
    double minPayment, additionalPayment, newPmt;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        adView = new AdView(this);
        adView.setAdUnitId("xxxxxxxxxxxxxxxxxxxxxxxxxxxx"); //edited out my unitID
        adView.setAdSize(AdSize.BANNER);
    
        LinearLayout layout = (LinearLayout) findViewById(R.id.ll);
        layout.addView(adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    

    Here is my Layout:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ll"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="1" >
    
        <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
    

    I also have my Manifest:

            <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="biz.midl.debtcalculator"
        android:versionCode="1"
        android:versionName="1" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="19" />
    
        <uses-permission android:name="android.permission.INTERNET" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
    
            <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
    
            <activity
                android:name="com.google.ads.AdActivity"
                android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
    
            <activity
                android:name="biz.midl.debtcalculator.MainActivity"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar.Fullscreen" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name="biz.midl.debtcalculator.About"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar.Fullscreen" >
                <intent-filter>
                    <action android:name="android.intent.action.ABOUT" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>