Импортировать com.google.ads.*; не имеет AdManager

Я действительно застрял здесь, пытаясь установить баннер с ads-admob для моего приложения для Android. Я выполнил все настройки макета в main.xml, также работал в файле манифеста с разрешениями, попробовал методы XML и JAVA, чтобы показать рекламу, и пытался заставить ее работать, но я всегда получаю "не могу получить currentAdManager" из logcat в Eclipse. Приложение также аварийно завершает работу, но работает без настроек admob. SDK моего AdMob является GoogleAdMobAdsSdk-6.0.1.jar, и я занимаюсь разработкой с использованием phonegap.

Я заметил, что команда "import com.google.ads.*;" отсутствует "AdManager", потому что, когда я вставляю отдельно "import com.google.ads.AdManager;", я получаю сообщение об ошибке "Импорт com.google.ads.AdManager не может быть решен". Мои файлы:

Моя ЯВА:

>     package what.car.notes;
>     
>     import android.os.Bundle;
>     import org.apache.cordova.*;
>     import com.google.ads.AdView;
>     import com.google.ads.AdManager; **- ERROR APEARS HERE**
>     import com.google.ads.*;
>     
>     public class Cargeous21forActivity extends DroidGap {
>         /** Called when the activity is first created. */
>         @Override
>         public void onCreate(Bundle savedInstanceState) {
>             super.onCreate(savedInstanceState);
>             super.loadUrl("file:///android_asset/www/index.html");
>             setContentView(R.layout.main);
>             
>             dView adView = (AdView)this.findViewById(R.id.AdView);
>       adView.loadAd(new AdRequest());
>         }
>     }

Мой файл LAYOUT (main.xml):

>     <?xml version="1.0" encoding="utf-8"?>
>     
>     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
>         xmlns:myapp="http://schemas.android.com/apk/res/what.car.notes"
>       android:layout_width="fill_parent"
>         android:layout_height="fill_parent"
>         android:orientation="vertical">
>         
>     <com.admob.android.ads.AdView
>     android:id="@+id/AdView"
>     android:layout_width="fill_parent"
>     android:layout_height="wrap_content"
>     myapp:backgroundColor="#000000"
>     myapp:primaryTextColor="#FFFFFF"
>     myapp:secondaryTextColor="#CCCCCC"
>     /> 
>     
>     </LinearLayout>

Мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="what.car.notes"
android:versionCode="4"
android:versionName="1.3" >

<uses-sdk android:minSdkVersion="7" />
<uses-library
    android:name="com.google.ads.AdManager" />

<supports-screens 
android:largeScreens="true" 
android:normalScreens="true" 
android:smallScreens="true" 
android:resizeable="true" 
android:anyDensity="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.BROADCAST_STICKY" />

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

<meta-data android:value="i've put my correct id here" android:name="ADMOB_PUBLISHER_ID" />

<activity android:name="com.admob.android.ads.AdMobActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation|keyboard|keyboardHidden"
                android:value="SQLite-NDK"  />
        <!-- Track Market installs -->
<receiver android:name="com.admob.android.ads.analytics.InstallReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

И, наконец, attrs.xml:

> <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable
> name="com.admob.android.ads.AdView"> <attr name="backgroundColor"
> format="color" /> <attr name="primaryTextColor" format="color" />
> <attr name="secondaryTextColor" format="color" /> <attr
> name="keywords" format="string" /> <attr name="refreshInterval"
> format="integer" /> </declare-styleable> </resources>

Кто-нибудь уже прошел через такую ​​вещь?

2 ответа

Пожалуйста, прочтите руководство по началу работы с Google AdMob SDK для Android. Пример, из которого вы получили этот код, взят из старого SDK Google Ads перед перезаписью Google AdMob Ads SDK.

Проблемы, которые я вижу на первом проходе:

  1. Определение активности вашего манифеста неверно. Смотрите эту страницу для правильного определения активности AdActivity.
  2. Вам не нужен attrs.xml. SDK теперь включает эти атрибуты.
  3. Я не думаю, что идентификатор издателя может быть мета-вейлом. Вы должны указать идентификатор издателя в своем определении AdView XML.
  4. Ваше определение AdView XML должно иметь adSize.
  5. Новый Google AdMob SDK не имеет класса com.google.ads.AdManager.

Спасибо, Эрик! Ваш ответ мне очень помог найти правильный код. Окончательный код выглядит так:

ДЖАВА:

   import android.os.Bundle;
import org.apache.cordova.*;
import android.app.Activity;
import android.os.Handler;
import com.google.ads.*;
import android.widget.*;
import android.widget.LinearLayout; 


public class myactActivity extends DroidGap {

     private static final String MY_AD_UNIT_ID = "a14fd7e04e46295"; 
     private AdView adView; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");


        //
     // Create the adView 
        adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID); 
        LinearLayout layout = super.root; // this is the only change from the sample 
        // Add the adView to it 
        layout.addView(adView); 
        // Initiate a generic request to load it with an ad 
        adView.loadAd(new AdRequest()); 

    }    
    }

Мой макет:

   <?xml version="1.0" encoding="utf-8"?>

<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:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

<com.google.ads.GoogleAdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"  
    ads:adUnitId="xxxxxxxxxxxxxxxxxxxx" 
    ads:adSize="BANNER"
    ads:loadAdOnCreate="true"/> 

</LinearLayout>

С тех пор все работало... НО! Да, есть, но... 2 дня спустя, с невероятной суммой в $0,00 и 150 рекламных объявлений, admob/google удалили мой аккаунт!! Я слышал, что их метод странный и вообще без причины удаляет разработчиков, и с $0,00 и 150 просмотрами они отрезают меня от своей программы. Хорошая часть: я нашел некоторые другие рекламные сервисы лучше, чем admob, но минус в том, что мне придется заново разбирать код...

В любом случае, спасибо, Эрик!

Другие вопросы по тегам