我们在 Playstore 中有一个使用 Cordova 开发的应用程序。
现在我们已经在原生 Android 中重建了整个应用程序。
现在我们希望在不注销的情况下将用户从以前的应用程序升级到新应用程序。
为此,如何将Cordova(window.localStorage)的本地数据迁移到Android共享首选项?
最后我迁移了本地数据如下
- 在 Activity/Fragment 视图中添加 webView 和
final WebView webView = findViewById(R.id.webView);
WebSettings webSetting = webView.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient());
//set callback to get data from webview to Native
webView.addJavascriptInterface(new MyJavaScriptInterface(), "MyHandler");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
//Create HTML file to read stored data in webView local storage and pass it to Native
webView.loadUrl("file:///android_asset/readData.html");
- 创建类
MyJavaScriptInterface
webView和native之间的通信如下
public class MyJavaScriptInterface {
@JavascriptInterface
public void sendKeyValue(String key, String value) {
Log.d("sendKeyValue", "key:" + key + " value:" + value);
}
}
-
在assets文件夹中添加以下readData.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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)