Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How get data from cordova-plugin-nativestorage in android java

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 {

}
like image 755
Lukas Plevac Developer Avatar asked Aug 26 '16 06:08

Lukas Plevac Developer


Video Answer


1 Answers

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.

like image 163
gillesC Avatar answered Oct 08 '22 19:10

gillesC