当前位置: 首页 > 面试题库 >

如何从Android Java中的cordova-plugin-nativestorage获取数据

慕凌龙
2023-03-14
问题内容

美好的一天,我为Cordova制作了本机背景mod,我需要从js到Java获取数据。我使用以下代码将数据保存在带有插件cordova-plugin-
nativestorage的
js中:

<!DOCTYPE html>
<html>
  <head>
    <title>Save data</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

    function onDeviceReady() {
        NativeStorage.setItem("somekey", "value", null, null);
    }

    </script>
  </head>
  <body onload="onLoad()">
  </body>
</html>

但是我的问题是:我不知道如何在没有Cordova活动的情况下使用Java在后台服务中获取此数据(“值”)。

背景服务Java:

package cz.oznameni;

public class Backgroundoznameni extends Service {

}

问题答案:

我进行了更改,因此您应该方便地访问所保存的值。

请首先重新安装插件:

cordova plugin remove cordova-plugin-nativestorage
cordova plugin add https://github.com/TheCocoaProject/cordova-plugin-nativestorage

这将安装开发版本。这是因为此更新的代码不会推送到NPM( UPDATE :现在不必使用dev版本,NPM上的版本就可以了)。

为了使用键检索值,我编写了以下方法:

String getValue(Context context, String key, String defaultValue) {
        SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
        return settings.getString(key, defaultValue);
    }

PREFS_NAME声明如下:

public static final String PREFS_NAME = "NativeStorage";

上下文应thisonCreate方法内可访问。

因此,总的来说,它应该像这样:

    public class Backgroundoznameni extends Service {
    public static final String PREFS_NAME = "NativeStorage";
      @Override
      public void onCreate() {
        String value = getValue(Backgroundoznameni.this, "somekey", null);
      }

      String getValue(Context context, String key, String defaultValue) {
            SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
            return settings.getString(key, defaultValue);
        }
    }

注意:代码未经测试!

编辑:此问题在此Github问题中进一步记录。



 类似资料:
  • 但我的问题是:我不知道如何在没有Cordova活动的情况下用java在后台服务中获得这些数据(“值”)。 Backgroud services Java:

  • 问题内容: 是否可以从cordova-sqlite同步获取数据? 我有一个带有字段(ID,caseName,日期)的表。该表中的每一行都对应于另一个以caseName字段命名的表。我需要遍历该表并获取所引用表中的行数计数。 为了在列表视图中显示“ i”的值,我需要显示该表中有多少个元素。我需要调用同步,因为我需要调用一些查询,该查询计算该元素中“ result.rows.item(i).CaseN

  • 问题内容: 我正在尝试让我的函数返回http get请求,但是,无论如何,它似乎在?scope中丢失了。我对Node.js不熟悉,因此不胜感激 问题答案: 当然,您的日志会返回:您在完成请求之前先进行日志。问题不是范围,而是 异步性 。 是异步的,这就是为什么它将回调作为参数的原因。做您在回调中要做的事情(传递给的):

  • 我有一张狗的名单,需要取一些数据。在一种情况下,我需要在列表中显示名称行,在其他情况下,我需要来自一只狗的全部或部分数据(名称、性别、速度)。我相当肯定我应该使用数组,尽管我是从字典开始的。我计划添加更多参数,并允许用户添加更多的狗,所以我试图找到最可扩展的选项

  • 问题内容: 我已经签出了很多页面,但是大多数教程和脚本使用这种JSON输出类型返回错误代码。那么,如何才能从Java中的JSON中提取数据? 问题答案: 如果要使用Gson,则首先声明用于容纳每个元素和子元素的类: 然后,声明一个最外层元素的数组(因为在这种情况下,JSON对象是一个JSON数组),并对其进行分配: 然后,您只需访问的元素。 要记住的重要一点是,您声明的属性的名称和类型应与JSON

  • 问题内容: 令我感到羞耻的是,我无法弄清楚如何从Gin框架的前端获取数据。在Django中,我得到了数据,所以: 一切都是简单易懂的。我应该怎么做杜松子酒? 问题答案: 服务器GIN无法处理来自axios的常规默认应用程序/ json请求!!!什么???请求应以application / x-www-form- urlencoded发送。我在Vue项目中的决定:使用vue-resource而不是a