AdView – Falta de adActivity con android: configChanges en AndroidManifest.xml
Acabo de configurar mi aplicación con el método de la biblioteca de Google Play para añadir agregados (AdMob). Cuando ejecuto el emulador el agregado tiene el mensaje de error:
Missing adActivity with android:configChanges in AndroidManifest.xml
He localizado una corrección en:
- ¿El android string.xml soporta cualquier otra forma de xml?
- Error al inflar XML en el fragmento Google maps
- Java.lang.UnsupportedOperationException: No se puede convertir a color: type = 0x1
- ¿Por qué esta línea xmlns: android = "http://schemas.android.com/apk/res/android" debe ser la primera en el archivo xml de diseño?
- Cómo crear un AttributeSet en Android?
Falta de adActivity con android: configChanges en AndroidManifest.xml
La corrección establecida para hacer lo siguiente:
"Com.google.ads.AdActivity" se declara cuando se utiliza el frasco sdk de admob en la carpeta "libs". > Parece que estás usando admob a través de la biblioteca de servicios de Google Play para cambiar:
Actividad android: nombre = "com.google.ads.AdActivity"
A
Actividad android: name = "com.google.android.gms.ads.AdActivity"
También asegúrese de agregar la etiqueta de meta-datos:
He intentado esto y el CatLog dijo que cambiar la meta etiqueta de nuevo a:
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
Mi 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.ua(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
Aquí está mi .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);
Aquí está mi diseño:
<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" />
También tengo mi Manifiesto:
<?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>
- Exportación de una base de datos SQLite a un archivo XML en Android
- Cómo especificar el atributo fromXType en el archivo anim xml
- XmlPullParser: obtener texto interno incluyendo etiquetas XML
- Temas de Android: Defina colores / degradados en "baseTheme.xml", use dentro de controles, reemplace en "subThemeX.xml"
- Android - ejemplo de análisis XML roto
- Los caracteres especiales no se muestran en android
- Android, envío de XML a través de HTTP POST (SOAP)
- Centrar un TextView en un TableRow en un TableLayout
Debe dejar la etiqueta de meta-datos tal como está:
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
Además, debe reemplazar esta etiqueta:
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
Con esto (como se sugiere en la respuesta que uniste):
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
Dado que está utilizando los Servicios de Google Play y no el SDK de AdMob heredado, debe reemplazar el nombre de la clase de actividad de com.google.ads.AdActivity
a com.google.android.gms.ads.AdActivity
Esto puede ser parte del problema. Parece que te estás perdiendo
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
En tu AndroidManifest.xml
Asegúrate de que solo tengas la biblioteca de Servicios de Google Play incluida y no tanto de Google Play Services como de Admob SDK.
Parece que el valor de @ integer / google_play_services_version es cero. ¿Se incluyen los recursos de Google Play Services en tu aplicación?
Si está utilizando la unidad debe utilizar esto.
<!-- Google Mobile Ads Permissions --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Eliminación de la declaración de diseño y dejar el programa uno trabajado. También hubo algunos problemas no relacionados que causaron problemas con Eclipse.
Desde la actualización del servicio de juego a la versión 22 se puede ir sin hacer por encima del cambio, estoy pegando el código para referencia futura aquí
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
En el archivo androidmanifest.xml con el servicio google play como lib. En lugar de utilizar el archivo admobsdk.jar
Todo lo que tienes que hacer es añadir esto a tu archivo AndroidManifest.xml:
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
Aparece a la pantalla que falta la actividad con android configchanges en Android manifestxml
- Cómo utilizar múltiples MapActivities / MapViews por aplicación / proceso de Android
- Error: No se encontraron toolchains en la carpeta de cadenas de herramientas NDK para ABI con prefijo: llvm