将本地存储从 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 应用 的相关文章

  • android以编程方式打开电池设置

    我正在寻找一种从 Android 应用程序打开电池设置屏幕的方法 到目前为止我发现了两个意图 Intent ACTION POWER USAGE SUMMARY Settings ACTION BATTERY SAVER SETTINGS
  • iOS Javascript DOM“冻结?”

    这里有几个问题 有没有办法阻止 iOS 在滚动时冻结页面上的 javascript 当您在另一个选项卡中或切换应用程序时 iOS 是否会冻结 JavaScript iOS 上还有其他主要的 javascript 限制吗 iOS 6 x 会暂
  • addToBackStack 之后的 popBackStack() 不起作用

    我的项目包含两个片段 FragmentA 应用启动时默认加载的fragment FragmentB 替换fragmentA当单击按钮完成时 这是我的主视图的 XML
  • 获取TextView的高度

    我有一些文字将被放入TextView 我这样做是使用setText 现在我需要找到文本在文本中占据的行数或高度TextView 我尝试使用getHeight 但它总是返回 0 无论如何 有没有办法获得文本中存在的文本的高度TextView
  • 如何在没有 Apple 开发者帐户的设备上运行应用程序

    我找到了几个网站 其中提供了有关如何完成此操作的信息 但似乎没有一个网站适用于 Xcode 10 1 或 iOS 12 1 我尝试过的那些似乎都不起作用 我试过这个 创建一个空的 swift 项目 单视图应用程序 将签名团队设置为我的个人团
  • 使用 AFNetworking 2.0 发布 JSON 数据

    我有一个 Web 脚本 它通过 HTTP POST 请求接受 JSON 字符串作为输入 我遇到过几个相同的 AFNetworking 1 x 示例 任何人都可以指出我或提供 AFNetworking 2 0 示例 以对使用格式化 JSON
  • Android SIP 客户端 SipManager.open() 未打开

    我一直在使用 Android SDK 的本机 SIP 库编写 SIP 客户端 由于某种原因 我无法让我的帐户在服务器上注册 以下是测试场地 Linux Mint 17 XFCE 运行 Kamailio 服务器 启用 MySQL 和 TLS
  • 将 REST 服务与 Android 应用程序同步

    我使用一个 REST 服务来填充数据库中的信息 稍后由我的应用程序使用 我已经阅读了有关此事的多个主题 现在必须决定如何在 REST 服务和数据库之间实现同步 想象一个应用程序 它从谷歌金融 API 获取有关股票的信息并将其存储在数据库中
  • 在“PhoneGap + jQuery Mobile”应用程序中正确注册事件

    我正在尝试定义注册两个初始化事件 jQuery 样式 的正确方法PhoneGap and jQuery 移动 in an Android应用 在研究了文档之后 我得出以下结论 index page live pageinit functio
  • TextView位于屏幕中央[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Android 中的 TextView 中水平和垂直居中文本 https stackoverflow com questions 432037 how do i center text hor
  • 如何检查应用程序是否违反 Google 的假冒政策

    我的应用程序已从 Google Play 商店中删除 原因如下 经审核 我的应用 有 由于政策罢工而被暂停并从 Google Play 中删除 因为 它违反了假冒政策 有没有其他方法可以在发布之前检查应用程序是否遵守所有 Google 政策
  • 在 Facebook 上分享文本和 URL

    我想分享一条消息 例如 查看图片http someUrl com http someUrl com从应用程序共享ABCapp 用户必须能够选择任何已安装的应用程序进行共享 我正在使用以下代码 Intent intent new Intent
  • 如何比双击更快地识别单击?

    我有一个UITableView与我添加单击的行and双击手势 let doubleTap UITapGestureRecognizer target self action doubleTap doubleTap numberOfTapsR
  • iOS 上有像 JUNG 这样的可视化框架吗?

    有没有类似的可视化框架JUNG http jung sourceforge net applet index html对于iOS 我想实现类似的东西this http prefuse org gallery graphview iOS 上最
  • 使用 Nexus 10 在 Android 4.3 上滚动时性能不佳

    我的应用程序有一个带有一些滚动的列表视图 在我测试过的所有手机 Nexus One Nexus 4 和 Galaxy S3 4 上都表现得非常好 以 60fps 滚动 但 Nexus 10 上的表现很糟糕 大概在 15fps 左右 我已经将
  • 如果没有按钮,Espresso 不会记录任何意图

    我正在尝试编写一个测试来验证使用浓缩咖啡启动的意图 问题是有意的 不记录任何意图 我有这个测试 Test public void shoulddosomething startActivity intended hasComponent h
  • proguard 导致 Google Play 服务的 ActivityRecognitionResult getMostProbableActivity 崩溃

    我最近向 Play 商店发布了一个应用程序 虽然它在没有 proguard 的情况下运行得很好 但当我决定使用它时 我遇到了意外的崩溃 我看过here http developer android com google play servi
  • 如何处理在某些 Marshmallow 之前的设备上未自动授予 SYSTEM_ALERT_WINDOW 权限

    我收到一些小米设备 例如 Mi 2 运行 API 级别 21 不显示叠加层的报告 我的应用程序以 API 23 为目标 有several http forum xda developers com xiaomi mi 3 help link
  • 在线和离线管理 iPhone 应用程序

    我被困在一个点上 我也在离线管理我的应用程序 第一次我从网络服务获取所有配置文件数据并将其路径存储到 sqlite 中时 我在更新这些数据时遇到问题 例如如果图像发生更改 我应该如何通知我的应用程序 我在 Google 上搜索了它 唯一的解
  • Android 2.2 中不带预览的相机捕获

    我需要捕获图像而不显示预览 我想在后台作为服务来完成它 可以这样做吗 是有可能实现的 您应该定义一个处理 Camera 对象的类 例如调用 Camera open 等 不要为相机对象提供以下行以禁用预览 mCamera setPreview

随机推荐

  • 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