如何从android java中的cordova-plugin-nativestorage获取数据

Luk*_*per 5 java android cordova cordova-plugins cordova-nativestorage

美好的一天,我为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>
Run Code Online (Sandbox Code Playgroud)

但我的问题是:我不知道如何在没有Cordova活动的后台服务中使用java获取此数据("值").

Backgroud服务java:

package cz.oznameni;

public class Backgroundoznameni extends Service {

}
Run Code Online (Sandbox Code Playgroud)

gil*_*esC 3

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

请首先重新安装插件:

cordova plugin remove cordova-plugin-nativestorage
cordova plugin add https://github.com/TheCocoaProject/cordova-plugin-nativestorage
Run Code Online (Sandbox Code Playgroud)

这将安装开发版本。这是因为更新的代码没有推送到 NPM(更新:现在不需要使用开发版本,NPM 上的版本就可以了)。

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

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

PREFS_NAME声明如下:

public static final String PREFS_NAME = "NativeStorage";
Run Code Online (Sandbox Code Playgroud)

上下文应该可以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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

注意:代码未经测试!

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