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

2024-01-07

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

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

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


最后我迁移了本地数据如下

  1. 在 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");
  1. 创建类MyJavaScriptInterfacewebView和native之间的通信如下
public class MyJavaScriptInterface {
        
        @JavascriptInterface
        public void sendKeyValue(String key, String value) {
            Log.d("sendKeyValue", "key:" + key + " value:" + value);
        }
     }
  1. 在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(使用前将#替换为@)

将本地存储从 Cordova 应用迁移到 Android 应用 的相关文章

  • Camera2设置预览(View)并获取预览回调

    我想从 Camera2 获取预览以及用于处理帧的 byte 回调 mImageReader ImageReader newInstance largest getWidth largest getHeight ImageFormat RAW
  • 在 doInBackground AsyncTask Android 中传递更多值

    如何传递更多的值doInBackground My AsyncTask看起来像这样 private class DownloadFile extends AsyncTask
  • 使用 Gradle 进行 Travis-CI Android 测试总是超时

    我正在尝试在 Travis CI 上构建和测试我的项目 它每次都会在我的所有存储库上向我显示相同的重复输出 这是我的 travis ymlhttps github com carts uiet cartsbusboarding blob m
  • 在 Marshmallow 中获取蓝牙本地 mac 地址

    在 Marshmallow 之前 我的应用程序将通过以下方式获取其设备 MAC 地址BluetoothAdapter getDefaultAdapter getAddress 现在 随着 Marshmallow Android 的回归02
  • Flutter - 选择 TextFormField 时键盘不显示

    我目前遇到一个问题 当我选择任何一个时 键盘不会出现TextFormFielda 内的小部件Form小部件 这是表单的代码 位于我的内部CreateAccountForm有状态的小部件 import package flutter mate
  • 输入连接-如何删除选定的文本?

    我为 Android 制作了一个自定义键盘 当我按下键盘的退格按钮时 我使用 getCurrentInputConnection deleteSurroundingText 1 0 从输入字段中删除一个字母 但是 当我选择一些文本然后按退格
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re
  • UILocalNotification 在后台 10 分钟后不提示

    In didFinishLaunchingWithOptions调用函数的定时器循环httpRequest每 1 分钟间隔一次 BOOL application UIApplication application didFinishLaun
  • 如何在警报对话框中为图像按钮设置 onclick 侦听器

    我有一个带有 ImageButton 的布局 该布局在 AlertDialog 中膨胀 我应该在哪里 如何设置 onClick 侦听器 这是我尝试使用的代码 ImageButton ib ImageButton findViewById R
  • Facebook Android 意图

    我对这个意图有疑问 这个意图是发送文本类型的消息 一切正常 电子邮件 短信 推特以及手机上的任何内容 但唯一有问题的是facebook 它会尝试以链接而不是文本的形式发布 Intent s new Intent android conten
  • 使用远程图像创建 MSSticker

    我正在尝试找出使用网络上托管的图像创建 MSStickers 的方法 我可以使用本地图像创建 MSStickers 例如 NSString imagePath NSBundle mainBundle pathForResource imag
  • 使用 Protobuf-net,我收到有关 List 未知线路类型的异常

    我已经开始将 Unity iOS 游戏转换为使用 Protobuf net 保存状态 看起来一切正常 直到我将此实例变量添加到GameState ProtoMember 10 public List
  • 如何在NavigationView的菜单项中设置椭圆形?

    我想在 NavigationView 的菜单项中设置 android ellipsize end 在我当前的实现中 当菜单项中的文本太长时 它只是在末尾被剪切 这是我到目前为止所尝试过的
  • 如何在 Swift 中使用indexesOfObjectsPassingTest:

    IndexOfObjectsPassingTest 的声明在 Swift 中看起来像这样 func indexesOfObjectsPassingTest predicate AnyObject Int CMutablePointer
  • 使用 qbs 构建 qt 应用程序

    我想知道在 Linux 上使用 qbs 编译 构建和创建 Android Qt 应用程序的步骤 我拥有所有必要的工具 目前我可以使用 qmake 创建 apk Qbs 目前不支持构建 Qt Android 应用程序 Qbs v1 4 中引入
  • UIStackView分布均匀填充

    所以 我有一个UIStackView其中包含四 4 UIViews 如果我删除其中一 1 个UIViews 其他三 3 个将填满UIStackView 我的问题 如何添加最大高度UIView这样它就不会填满整个空间UIStackView即使
  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • 查找配对的 Android 蓝牙设备是否在范围内的正确方法?

    我想编写一个充当蓝牙客户端的应用程序 我想做的是找出最好的方法来确定我支持的特定设备是否在范围内 而不是一直尝试在其上执行 BluetoothDevice connect 并失败如果不在范围内 这里我们假设设备已经配对 恐怕在特定设备处于范
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • Android - 保留或删除应用程序卸载时创建的文件

    我创建了一个应用程序 用于创建文件并将其存储到 SD 卡 有没有办法将文件夹与应用程序绑定 以便当用户在 Android 设备上运行卸载时删除所有文件 自 2009 年以来似乎有了一些进展 来自文档 http developer andro

随机推荐

  • Filebeat - 解析消息行中的字段

    我正在使用 Filebeat 将日志数据从本地 txt 文件发送到 Elasticsearch 并且 我想添加一些字段message事件行 例如时间戳和日志级别 例如 这是我的日志行之一 2016 09 22 13 51 02 877 IN
  • 如何将样式(css+html)与php隔离

    我如何隔离样式 css questions tagged css html questions tagged html from php questions tagged php 就像在 php 文件中只放入一些行 包括整个内容style
  • 在unity 3D中更改Cubical Shower 3d模型的尺寸

    我正在开发一个项目 该项目有一个立方体淋浴作为 3D 模型 它有两个不同的侧面 如前面提到的侧面 1 和侧面 2 另外一侧 1 分为两个屏幕 并且具有玻璃 框架和支架 与一侧 1 的屏幕 2 相同 我想在不改变支撑宽度和框架尺寸的情况下增加
  • 无 BOM 的 UTF-8

    我有 javascript 文件 每次我将它们转换为正确的格式时 我需要将它们保存为 UTF 8 无 BOM 记事本 当我在 Visual Studio 中打开它们时 它们会恢复为带有 BOM 的 UTF 8 我怎样才能阻止VS2010这样
  • 如何使用 JQuery 将样式应用到正确的标签

    我正在尝试添加更多逻辑my code https stackoverflow com questions 38539500 get input value using htmlfor 但它不起作用 我必须将我的图标包裹在span标签 这样我
  • DatePicker 无法在模态中工作

    我有一个网站和这是一个链接 http pastebin com WHHMnh3S 当您单击文本字段时 您可以看到 DatePicker 正在工作 但如果你点击我mportFriend gt Add Manual Friend gt 然后 如
  • @FunctionalInterface 如何影响 JVM 的运行时行为?

    我最初的问题是完全重复的this one https stackoverflow com q 27121563 1093528 也就是说 为什么这个接口有运行时保留策略 但接受的答案根本不能令我满意 原因有二 事实上这个接口是 Docume
  • 对于同一个 REST 方法,我们是否可以有多个 @Path 注释 [重复]

    这个问题在这里已经有答案了 我们可以有多个吗 Path同一 REST 方法的注释 即执行的方法相同 但在访问多个 URL 时执行 例如 我想运行searchNames 两者的方法http a b c and http a b 你不能有多个
  • Xamarin 表单的 YouTube 播放器

    您好 我正在尝试在以下支持下创建一个从 webview 继承的 youtubeviewyoutube api https github com nishanil YouTubePlayeriOS blob master Classes Yo
  • 由于无法找到或加载主类错误,Flink 集群未启动

    我正在尝试设置flink并运行集群 尽管我得到以下输出 看起来集群已启动 bin start cluster sh Starting cluster Starting standalonesession daemon on host LAP
  • 使用 ExoPlayer 将 YouTube 直播视频 (DASH) 流式传输到 Android 应用程序

    我正在制作一个可以将实时 YouTube 视频流式传输到我的应用程序的应用程序 我想使用 ExoPlayer 我浏览了 ExoPlayer 的演示应用程序 他们在 DASH 流中使用的 URL 是这样的 uri http www youtu
  • 如何在 Python / Matplotlib 中根据特征值和特征向量绘制椭圆?

    给定一个二维数据集 我想在数据周围绘制一个椭圆 为此 我首先计算了协方差矩阵及其相关的特征值 cov np cov X T eigenvalues eigenvectors np linalg eig cov 我现在想使用 matplotl
  • Django REST Framework 序列化器 - 访问现有外键

    我在用Django 休息框架 http www django rest framework org api guide serializers在我的应用程序中 我需要创建包含外键的新模型实例 这些引用另一个表中的现有对象 因此我不希望创建这
  • 将参数传递给 NSTimer 调用的方法

    如何将参数传递给 NSTimer 调用的方法 我的计时器看起来像这样 NSTimer scheduledTimerWithTimeInterval 4 target self selector selector updateBusLocat
  • Cx 冻结错误 - Python 34

    我有一个 Cx Freeze 安装文件 我正在尝试使其工作 令人非常沮丧的是used适当冷冻 但是现在我收到以下错误 编辑 显示的错误不是通过控制台的 Python 异常 而是尝试启动通过冻结生成的结果 exe 文件时的崩溃报告 文件 no
  • 为什么在 while 循环中使用 itrerator 对象时需要进行类型转换? [复制]

    这个问题在这里已经有答案了 我现在正在学习java 在编写遍历代码时ArrayList using Iterator在使用迭代器的对象之前 我必须使用类名next 功能 有人能帮我解决这个问题吗 import java util publi
  • 使用“在模型中保存起始值”选项来帮助 Dymola 中的收敛

    I build a model in dymola Even though there are some errors during the initialization process but the calculation succee
  • Python 文档字符串模板化

    为什么动态格式化文档字符串不起作用 是否有可接受的解决方法来执行此操作在函数定义时 gt gt gt DEFAULT BAR moe s tavern gt gt gt def foo bar DEFAULT BAR hello this
  • IONIC 键盘隐藏在输入焦点上

    我正在编写一个 Ionic 应用程序 该应用程序将用于医疗保健领域的物流目的 用于此应用程序的设备具有内置条形码扫描仪并在 android 4 1 1 上运行 该扫描仪在输入字段中输入数据 并通过按 输入 键提交数据 由于扫描仪在某些情况下
  • 将本地存储从 Cordova 应用迁移到 Android 应用

    我们在 Playstore 中有一个使用 Cordova 开发的应用程序 现在我们已经在原生 Android 中重建了整个应用程序 现在我们希望在不注销的情况下将用户从以前的应用程序升级到新应用程序 为此 如何将Cordova window