我们在Playstore中有一个使用Cordova开发的应用程序。 现在,我们已经在Native Android中重建了整个应用程序。
现在,我们希望在不注销的情况下将用户从以前的应用升级到新应用。
为此,如何将Cordova(window.localStorage)的本地数据迁移到Android共享首选项?
答案 0 :(得分:0)
使用cordova-plugin-nativestorage。
通过在Android和iOS中本机实现SharedPreferences,并在iOS中实现NSDefault,它允许一种简单而本地的持久方法在Android和iOS中保存数据。
JavaScript:
cordova plugin add cordova-plugin-nativestorage
NativeStorage.setItem("username","kalidoss",setSuccess, setError);
function setSuccess(obj) {
alert(obj);
}
function setError(error) {
alert(error.code);
}
Java:
Context context =this;
String MyPREFERENCES = "NativeStorage";
SharedPreferences sharedpreferences = context.getSharedPreferences(MyPREFERENCES,Context.MODE_PRIVATE);
String name= sharedpreferences.getString("username","");
答案 1 :(得分:0)
最后,我已经按照以下步骤迁移了本地数据
在“活动/片段”视图中添加webView和
final WebView webView = findViewById(R.id.webView);
WebSettings webSetting = webView.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.addJavascriptInterface(new MyJavaScriptInterface(), "MyHandler");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
webView.loadUrl("file:///android_asset/readData.html");
创建类MyJavaScriptInterface
以便在webView和本机之间进行如下通信
公共类MyJavaScriptInterface {
@JavascriptInterface
public void sendKeyValue(String key, String value) {
Log.d("sendKeyValue", "key:" + key + " value:" + value);
}
}
在资产文件夹中添加以下html文件
<!DOCTYPE html> <html> <body> <div id="result"></div> <div id="resultCount"></div> <script> // Check browser support if (typeof(Storage) !== "undefined") { for(i = 0; i < localStorage.length; i++) { console.log("key "+i+" "+localStorage.key(i)); console.log("value"+i+" "+localStorage.key(i)+"= "+localStorage.getItem(localStorage.key(i))); window.MyHandler.sendKeyValue(localStorage.key(i), localStorage.getItem(localStorage.key(i))); } } </script> </body> </html>