Android AdMob PhoneGap не работает

Может ли кто-нибудь помочь мне, я пытаюсь внедрить admob в Android последние два дня, но получаю следующие сообщения об ошибках:

вот мой файл activity_appname.xml

Following is the code of my main java file -


    import org.apache.cordova.*;
    import com.google.ads.*;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.support.v4.app.NavUtils;
    import android.widget.*;

    public class Albania extends DroidGap {
        private AdView adView;


        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            super.loadUrl("file:///android_asset/www/index.html");
            super.setIntegerProperty("loadUrlTimeoutValue", 70000);
            adView = new AdView(this, AdSize.BANNER, "a1502224a0ab1f8");
            LinearLayout layout = (LinearLayout) findViewById(R.id.adView);
            layout.addView(adView);
            adView.loadAd(new AdRequest()); }

вот мой файл android manifest.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/padding_medium"
        android:text="@string/hello_world"
        tools:context=".Albania" />


    <com.google.ads.AdView android:id="@+id/adView"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         ads:adSize="BANNER"
                         ads:testDevices="TEST_EMULATOR, S567041ba118d"
                         ads:loadAdOnCreate="true"/>


</RelativeLayout>

Из этот вопрос SO убедитесь, что в XML-файле манифеста есть:

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".Albania"
            android:label="@string/title_activity_albania" 
            android:configChanges="orientation|keyboardHidden|orientation|keyboard|screenSize|uiMode|screenLayout|locale"
            android:hardwareAccelerated="true" >
            <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|screenLayout|uiMode|screenSize|smallestScreenSize" />         
    </application>
</manifest>

person webdev    schedule 08.08.2012    source источник


Ответы (2)


Вам не нужно указывать

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
в XML и в коде. Просто поместите _2_ в _3_ в вашем XML, и вы сможете удалить следующий код Adview:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
person Will    schedule 08.08.2012

РЕДАКТИРОВАТЬ:

adView = new AdView(this, AdSize.BANNER, "a1502224a0ab1f8");
LinearLayout layout = (LinearLayout) findViewById(R.id.adView);
layout.addView(adView);
adView.loadAd(new AdRequest());

Кордова заставляет вас загружать URL-адрес и абстрагируется от того, как вы устанавливаете свое представление. Вам придется вручную получить родителя Cordova WebView и добавить AdView в parentView. Код может выглядеть примерно так:

Вы хотите сказать, что я должен сделать это в моем xml файле - AdView ‹com.google.ads.AdView ads:adUnitId=a1502224a0ab1f8 android:layout_width=wrap_content android:layout_height=wrap_content ads:adSize=BANNER ads:testDevices=TEST_EMULATOR,S567041ba118d ads:loadAdOnCreate=true/› ads:adUnitId="a1502224a0ab1f8" Я не понял, что это удалить код Adview.

adView = new AdView(this, AdSize.BANNER, "a1502224a0ab1f8");
// Get the parent of the cordova webview. May be able to do something like: this.webView.getParent();
parentView.addView(adView);
adView.loadAd(new AdRequest());
person Eric Leichtenschlag    schedule 08.08.2012
comment
правильно - я обновил свой ответ, чтобы показать вам, какой код Java вам больше не понадобится. - person webdev; 09.08.2012
comment
Большое Вам спасибо за ответ, что удалили все ошибки. Однако тестовые объявления не отображаются на моем устройстве. Я удалил этот код из файла Java и изменил XML-файл следующим образом: _1_ ‹com.google.ads.AdView ads:adUnitId=a1502224a0ab1f8 android:layout_width=wrap_content android:layout_height=wrap_content ads:adSize=BANNER ads:testDevices= TEST_EMULATOR,S567041ba118d,0A3AA88D17028026 ads:loadAdOnCreate=true/› _2_ - person Eric Leichtenschlag; 09.08.2012
comment
Идентификатор тестового устройства, который ищет SDK AdMob, представляет собой хешированный идентификатор, поэтому указанные вами идентификаторы недействительны. Попробуйте еще раз запустить свое приложение на устройстве и после того, как вы сделали запрос рекламы, проверьте в логарифме сообщение типа code. Затем попробуйте поместить этот идентификатор устройства в свой список testDevices, и он должен работать. - person webdev; 10.08.2012
comment
Я перепробовал все, а также опубликовал свое приложение в Google Play Store, но оно по-прежнему не показывает рекламу Admob. Вот URL-адрес Google Play: play.google.com/store. /приложения/ - person Eric Leichtenschlag; 14.08.2012
comment
Я скачал ваше приложение. Это не запрос рекламы. У вас есть файл xml, но вы не настраиваете представление содержимого как этот файл xml, поэтому он не используется. Вместо этого я бы попытался захватить родительский элемент webView, который содержит класс DroidGap, и добавить AdView в parentView (используя код Java, который у вас изначально был). Я обновлю ответ, чтобы отразить это. - person webdev; 14.08.2012
comment
Спасибо, Эрик, я добавил следующий код в свой основной java-файл AdView adView = (AdView)this.findViewById(R.id.ad); adView = new AdView(this, AdSize.BANNER, a1502224a0ab1f8); adView.loadAd(новый AdRequest()); И получение этого в файле logcat 08-16 19:03:30.696: I/Ads(6763): URL-адрес полученного объявления: ‹url: googleads.g.doubleclick.net:80/mads/gma?......... Аккаунт Admob также показывает этот статус, ваш сайт в настоящее время отправляет запросы объявлений в адмоб. Но реклама не появляется в приложении, сколько времени это занимает? - person Eric Leichtenschlag; 15.08.2012
comment
Что такое R.id.ad? Этого нет в исходном файле XML. Также помните, что создание XML-файла не будет работать, так как super.loadUrl() фактически создает для вас contentView под капотом. Вам нужно будет найти объект WebView внутри DroidGap, получить его родителя и объявить adView в качестве дочернего элемента родителя WebView. - person webdev; 16.08.2012
comment
На самом деле в моем xml я изменил свой идентификатор на android:id=@+id/ad, ранее это был adView. Это мое первое приложение Cordova для Android, я не очень разбираюсь в программировании на JAVA. Как я могу это сделать - найти объект WebView внутри DroidGap, получить его родителя и объявить adView как дочерний элемент родителя WebView. Извините за вопрос, но что мне искать? - person Eric Leichtenschlag; 17.08.2012
comment
08-08 19:05:33.362: W/webcore(3228): не удается получить viewWidth после первого макета 08-08 19:10:51.632: W/dalvikvm(3328): VFY: невозможно разрешить прямой метод 3204 : Landroid/webkit/WebView;. (Landroid/content/Context;Landroid/util/AttributeSet;IZ)V 08-08 19:10:51.662: I/webclipboard(3328): clipservice: android.sec.clipboard.ClipboardExManager@40534500 08-08 19:10: 52.142: I/CordovaLog(3328): изменение уровня журнала на DEBUG(3) 08-08 19:10:52.142: I/CordovaLog(3328): найдено предпочтение для useBrowserHistory=false 08-08 19:10:52.142: D/ CordovaLog(3328): найдено предпочтение для useBrowserHistory=false 08-08 19:10:52.152: E/dalvikvm(3328): не удалось найти класс 'android.webkit.WebResourceResponse', на который ссылается метод org.apache.cordova.CordovaWebViewClient. generateWebResourceResponse 08-08 19:10:52.152: W/dalvikvm(3328): VFY: невозможно разрешить новый экземпляр 467 (Landroid/webkit/WebResourceResponse;) в Lorg/apache/cordova/CordovaWebViewClient; 08-08 19:10:52.152: W/dalvikvm(3328): VFY: невозможно найти класс, указанный в подписи (Landroid/webkit/WebResourceResponse;) 08-08 19:10:52.182: W/dalvikvm(3328): VFY : не удалось найти класс, указанный в подписи (Landroid/webkit/WebResourceResponse;) 08-08 19:10:52.182: W/dalvikvm(3328): VFY: не удалось найти класс, указанный в подписи (Landroid/webkit/WebResourceResponse;) 08 -08 19:10:52.182: W/dalvikvm(3328): VFY: невозможно разрешить виртуальный метод 3225: Landroid/webkit/WebViewClient;.shouldInterceptRequest (Landroid/webkit/WebView;Ljava/lang/String;)Landroid/webkit/ ответ веб-ресурса; 08-08 19:10:52.182: D/DroidGap(3328): DroidGap.init() 08-08 19:10:52.192: D/CordovaWebView(3328): >>> loadUrl(file:///android_asset/www /index.html) 08-08 19:10:52.192: D/PluginManager(3328): init() 08-08 19:10:52.212: D/CordovaWebView(3328): >>> loadUrlNow() 08-08 19 :10:52.272: E/Ads(3328): Не удалось найти com.google.ads.AdActivity. Убедитесь, что он зарегистрирован в AndroidManifest.xml. 08-08 19:10:52.272: E/Ads(3328): в AndroidManifest.xml должна быть объявлена ​​AdActivity с configChanges. 08-08 19:10:52.282: I/webclipboard(3328): clipservice: android.sec.clipboard.ClipboardExManager@405512e0 08-08 19:10:52.332: I/webclipboard(3328): clipservice: android.sec.clipboard .ClipboardExManager@405512e0 08-08 19:10:52.902: D/AndroidRuntime(3328): завершение работы виртуальной машины 08-08 19:10:52.902: W/dalvikvm(3328): threadid=1: поток завершается с необработанным исключением (группа =0x40018578) 08-08 19:10:52. 902: E/AndroidRuntime(3328): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: main 08-08 19:10:52.902: E/AndroidRuntime(3328): java.lang.RuntimeException: невозможно запустить активность ComponentInfo{com.ApplicationNexus.Albania/com.ApplicationNexus .Albania.Albania}: java.lang.NullPointerException 08-08 19:10:52.902: E/AndroidRuntime(3328): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 08-08 19:10:52.902 : E/AndroidRuntime(3328): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 08-08 19:10:52.902: E/AndroidRuntime(3328): в android.app.ActivityThread.access$1500(ActivityThread .java:117) 08-08 19:10:52.902: E/AndroidRuntime(3328): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 08-08 19:10:52.902: E/AndroidRuntime (3328): в android.os.Handler.dispatchMessage(Handler.java:99) 08-08 19:10:52.902: E/AndroidRuntime(3328): в android.os.Looper.loop(Looper.java:130) 08-08 19:10:52.902: E/AndroidRunti я(3328): в android.app.ActivityThread.main(ActivityThread.java:3687) 08-08 19:10:52.902: E/AndroidRuntime(3328): в java.lang.reflect.Method.invokeNative(собственный метод) 08-08 19:10:52.902: E/AndroidRuntime(3328): в java.lang.reflect.Method.invoke(Method.java:507) 08-08 19:10:52.902: E/AndroidRuntime(3328): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 08-08 19:10:52.902: E/AndroidRuntime(3328): в com.android.internal.os.ZygoteInit.main(ZygoteInit .java:625) 08-08 19:10:52.902: E/AndroidRuntime(3328): at dalvik.system.NativeStart.main(собственный метод) 08-08 19:10:52.902: E/AndroidRuntime(3328): вызвано автор: java.lang.NullPointerException 08-08 19:10:52.902: E/AndroidRuntime(3328): в com.ApplicationNexus.Albania.Albania.onCreate(Albania.java:22) 08-08 19:10:52.902: E /AndroidRuntime(3328): в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-08 19:10:52.902: E/Androi dRuntime(3328): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 08-08 19:10:52.902: E/AndroidRuntime(3328): ... еще 11 - person webdev; 17.08.2012