Cordova 浏览器本地存储被StartApp/adMob/mobileCore阻止
我最终设法将StartApp应用到我的cordova项目中,当一切看起来都很好时,最大的问题出现了。StartApp不知怎么搞砸了我的本地存储数据库。正如我在互联网上看到的那样,adMob也出现了这种情况。当我按住中间按钮进入最近的应用程序并强制关闭应用程序时,下一次打开它时,本地存储中的所有内容似乎都被抽出来了。我不知道怎么做,但如果我再输入并关闭它几次,localstorage就会得到它的旧值,然后再次释放它们 我肯定这是Startapp,因为如果我评论:Cordova 浏览器本地存储被StartApp/adMob/mobileCore阻止,cordova,webview,admob,cordova-3,startapp,Cordova,Webview,Admob,Cordova 3,Startapp,我最终设法将StartApp应用到我的cordova项目中,当一切看起来都很好时,最大的问题出现了。StartApp不知怎么搞砸了我的本地存储数据库。正如我在互联网上看到的那样,adMob也出现了这种情况。当我按住中间按钮进入最近的应用程序并强制关闭应用程序时,下一次打开它时,本地存储中的所有内容似乎都被抽出来了。我不知道怎么做,但如果我再输入并关闭它几次,localstorage就会得到它的旧值,然后再次释放它们 我肯定这是Startapp,因为如果我评论: StartAppSDK.init(
StartAppSDK.init(这是“xxx”,“xxx”,true)代码>一切又恢复正常了。
我在互联网上读到,StartApp(adMob也是如此)和localstorage之间可能存在冲突。
一种方法是延迟StartApp初始化,就像我在代码中所做的那样。这似乎是可行的,但我有另一个问题:
通过这种方法加载横幅后:它每秒刷新一次,而不是像以前那样5-6秒,这真是令人沮丧(横幅几乎无限滚动,我无法真正阅读广告)。这个解决方案的另一个问题是横幅的左右两侧缺少几个像素。所以宽度有点缩小了,看起来不太好看
注意:我注意到,当设备处于暂停状态时,无论我使用什么方法初始化StartApp,我都会在logcat中获得失败的活页夹事务。但一切正常。onPuse和onResume中的代码被触发。我猜这可能是StartApp弄乱本地存储的原因(因为只有在我强制关闭应用程序时,以及在触发on force close onPause事件之前,才会发生这种情况)
有时在恢复或应用程序启动时,我会:
E/Web控制台:无法识别和忽略视口参数键“”。在
对我的ap也没有任何影响,但可能对本地存储有影响
主java文件:
package com.Snap.What;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
import android.widget.RelativeLayout;
import org.apache.cordova.*;
import com.startapp.android.publish.StartAppAd;
import com.startapp.android.publish.StartAppSDK;
import com.startapp.android.publish.banner.Banner;
public class WhatSnap extends CordovaActivity
{
private StartAppAd startAppAd = new StartAppAd(this);
private ViewGroup layout;
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
super.init();
// Set by <content src="index.html" /> in config.xml
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
appView.getSettings().setJavaScriptEnabled(true);
appView.addJavascriptInterface(jsInterface, "JSInterface");
super.loadUrl(Config.getStartUrl());
//super.loadUrl("file:///android_asset/www/index.html");
mHandler.postDelayed(new Runnable() {
public void run() {
doStuff();
}
}, 5000);
setLayout();
// showBanner();
}
public void doStuff(){
StartAppSDK.init(this, "xxx", "xxx", true);
startAppAd.loadAd(); // load the next ad
}
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
@JavascriptInterface
public void displayBanner()
{
activity.runOnUiThread(new Runnable() {
public void run() {
//Code that interact with UI
initBanner();
}
});
}
@JavascriptInterface
public void displayexitAd()
{
activity.runOnUiThread(new Runnable() {
public void run() {
//Code that interact with UI
exitAd();
}
});
}
@JavascriptInterface
public void displayAd()
{
activity.runOnUiThread(new Runnable() {
public void run() {
//Code that interact with UI
showAd();
}
});
}
}
public void setLayout(){
root.removeView((View) appView);
layout = new RelativeLayout(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
layout.setLayoutParams(lp);
appView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT));
appView.setVisibility(View.INVISIBLE);
layout.addView((View) appView);
setContentView(layout);
Log.e("setLayout", "setLayout");
}
public void initBanner(){
Banner startAppBanner = new Banner(this);
RelativeLayout.LayoutParams bannerParameters =
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
bannerParameters.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bannerParameters.addRule(RelativeLayout.CENTER_HORIZONTAL);
// Add to main Layout
layout.addView(startAppBanner, bannerParameters);
Log.e("showBanner", "showBanner");
}
public void exitAd(){
startAppAd.onBackPressed();
}
public void showAd(){
startAppAd.showAd(); // show the ad
startAppAd.loadAd(); // load the next ad
}
}
但有时当我强制关闭应用程序时,localstorage有时会保持不变
请帮帮我,我花了3天时间来解决这个问题,但什么好事都没有发生。请有人帮忙,这是一个很常见的问题。。很多人都有。。请至少试着提出一些建议。。。也许你是对的。。
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" android:windowSoftInputMode="adjustPan" package="com.Snap.What" xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTop" android:name="WhatSnap" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.startapp.android.publish.list3d.List3DActivity"
android:theme="@android:style/Theme" />
<activity android:name="com.startapp.android.publish.AppWallActivity"
android:theme="@android:style/Theme.Translucent"
android:configChanges="orientation|keyboardHidden|screenSize" />
</application>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>
@Override public void onAttachedToWindow() {
super.onAttachedToWindow();
doStuff();
};