android java 如何从 cordova-plugin-nativestorage 获取数据
How get data from cordova-plugin-nativestorage in android java
美好的一天,
我为 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 在后台服务中获取此数据 ("value") activity。
后台服务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:现在没有必要使用开发版本,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";
上下文应该 this
可以在 onCreate
方法中访问。
总的来说应该是这样的:
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);
}
}
注意:代码未经测试!
编辑:这在this Github issue中有进一步的记录。
美好的一天, 我为 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 在后台服务中获取此数据 ("value") activity。
后台服务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:现在没有必要使用开发版本,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";
上下文应该 this
可以在 onCreate
方法中访问。
总的来说应该是这样的:
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);
}
}
注意:代码未经测试!
编辑:这在this Github issue中有进一步的记录。