Good day, I making native background mod for Cordova and I need get data from js to java. I save data in js with plugin cordova-plugin-nativestorage, with this code:
<!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>
but my problem is: I don’t know how to get this data ("value") with java in background services without Cordova activity.
Backgroud services java:
package cz.oznameni;
public class Backgroundoznameni extends Service {
}
I've made a change, so you should conveniently access the saved value.
Please, first reinstall the plugin:
cordova plugin remove cordova-plugin-nativestorage
cordova plugin add https://github.com/TheCocoaProject/cordova-plugin-nativestorage
This will install the dev version. This because this updated code isn't pushed to NPM (UPDATE: it is now not necessary to use the dev version, the version on NPM is just fine).
For retrieving the value with a key, I've written the following method:
String getValue(Context context, String key, String defaultValue) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
return settings.getString(key, defaultValue);
}
The PREFS_NAME
should be declared as follows:
public static final String PREFS_NAME = "NativeStorage";
The context should be this
accessable within the onCreate
method.
So overall it should look something like this:
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);
}
}
NOTE: Code not tested!
EDIT: This is further documented in this Github issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With