我正在开发一个使用javascript / HTML5的Phonegap应用程序(Android) localStorage的。该应用程序工作正常,但是当我添加Admob时 应用程序,localStorage无法正常工作。含义 当应用程序强制关闭或手机时,存储的值将被删除 重启。
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);
*/
}
}
谢谢!
答案 0 :(得分: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());
}
}
答案 1 :(得分:0)
我在使用Phonegap / Cordova和一个sqlite文件将AdMob与存储一起工作时遇到了同样的问题,我的数据库被从apk复制到数据库位置。
我试过这里提到的延迟解决方案。我的观察是,要使用正确的数据访问数据库,需要在创建AdRequest之前完成window.openDatabase("xxx", "1.0", "xxx", 1000000);
。这不是我的解决方案,因为在另一个页面上再次打开连接会导致数据库为空。
我解决此问题的方法是使用https://github.com/lite4cordova/Cordova-SQLitePlugin处的插件。它的工作方式与websql完全相同,但以不同的方式打开数据库(如果已经编写了查询,则重写不多)。如果您使用以下方式打开它:
var db = window.sqlitePlugin.openDatabase({name: "DB"});
它将使用DB.db文件而不是默认的0000000000000001.db。这可以防止与AdMob发生冲突。需要注意的两件事:
插件需要在设备上完成而不仅仅是文档 加载以打开数据库。
如果您正在处理您发送的sqlite文件 使用apk,请务必调整将其复制到的位置。