2012-01-13 2 views
2

Я разрабатываю приложение Phonegap (Android), которое использует javascript/HTML5 localStorage. Приложение работает отлично, однако, когда я добавляю Admob в приложение, localStorage не работает. Значение сохраненные значения удаляются, когда приложение принудительно закрывается или телефон перезапускается.Android + HTML5 (LocalStorage) + Admob: ошибка?

public class TestActivity extends DroidGap { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.loadUrl("file:///android_asset/www/index.html"); 

     // ADMOB: If comment, work. 
     /* 
     LinearLayout layout = super.root; 
     AdView adView = new AdView(this, AdSize.BANNER, **MY_CODE_ADMOB**); 
     layout.addView(adView); 
     AdRequest request = new AdRequest(); 
     adView.loadAd(request); 
     */ 
    } 
}   

Спасибо!

ответ

10

Вам нужно задержать код, который запускает объявление на несколько секунд ... ниже работал для меня.

public class youActivity extends DroidGap { 
private Handler mHandler = new Handler(); 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.loadUrl("file:///android_asset/www/index.html"); 
    mHandler.postDelayed(new Runnable() { 
     public void run() { 
      doStuff(); 
     } 
    }, 5000); 
} 
private void doStuff() { 
    final String MY_AD_UNIT_ID = "yourAD_UNIT_ID"; 
    AdView adView; 
    // 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()); 
} 
} 
+0

частный обработчик mHandler = new Handler(); показывая, что ошибка «Обработчик не может быть разрешена по типу» в Eclipse. Пожалуйста, помогите мне – siva565

+0

@ user1184211 Мы не можем просто изменить имя localstorage db, чтобы конфликты исчезли? Я пытался использовать sql, как вы предлагали, но я не могу получить значения из него как его асинхронные :( –

0

я exeprienced те же проблемы в получении AdMob совместной работы с хранения с использованием PhoneGap/Кордова и SQLite файл с моей БД копируется из APK в локацию дб. Я пробовал решение о задержке, упомянутое здесь. Мое наблюдение заключалось в том, что для доступа к базе данных с правильными данными необходимо выполнить window.openDatabase("xxx", "1.0", "xxx", 1000000); до создания AdRequest. Это не было решением в моем случае, так как открытие соединения снова на другой странице, где оно не указано, приведет к пустой базе данных.

Способ, которым я решил эту проблему, был с плагином, доступным по адресу . Он работает точно так же, как и websql, за исключением открытия базы данных по-другому (не так много переписать, если у вас уже есть ваши запросы). Если открыть его с помощью:

var db = window.sqlitePlugin.openDatabase({name: "DB"}); 

он будет использовать DB.db файл, а не 0000000000000001.db по умолчанию. Это должно предотвратить конфликты с AdMob. 2 вещи, чтобы наблюдать за:

  1. плагин необходим ondeviceready быть trigerred не только документ, чтобы быть загружены, чтобы открыть дб.

  2. Если вы справляетесь с sqlite-файлом, отправляете с apk, не забудьте настроить место, где вы его скопируете.

+0

не можем мы просто изменить имя db localstorage, чтобы конфликты исчезли? Я пытался использовать sql, как вы предлагали, но я не могу получить значения из это как его асинхронный :( –

 Смежные вопросы

  • Нет связанных вопросов^_^