将本地存储从Cordova应用迁移到Android应用

时间:2019-10-09 12:25:42

标签: android ios cordova cross-platform

我们在Playstore中有一个使用Cordova开发的应用程序。 现在,我们已经在Native Android中重建了整个应用程序。

现在,我们希望在不注销的情况下将用户从以前的应用升级到新应用。

为此,如何将Cordova(window.localStorage)的本地数据迁移到Android共享首选项?

2 个答案:

答案 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)

最后,我已经按照以下步骤迁移了本地数据

  1. 在“活动/片段”视图中添加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");
    
  2. 创建类MyJavaScriptInterface以便在webView和本机之间进行如下通信

    公共类MyJavaScriptInterface {

        @JavascriptInterface
        public void sendKeyValue(String key, String value) {
            Log.d("sendKeyValue", "key:" + key + " value:" + value);
        }
     }
    
  3. 在资产文件夹中添加以下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>