2016-08-26 10 views
5

Dzień dobry, Wykonuję natywny mod do tła dla Cordova i potrzebuję uzyskać dane z js do java. zapisać dane w js z pluginem cordova-plugin-nativestorage, z tym kodem:Jak uzyskać dane z cordova-plugin-nativestorage w Android java

<!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> 

ale mój problem jest: nie wiem, jak uzyskać te dane („wartość”) z java w usługach tle, bez aktywności Cordova.

Backgroud usługi Java:

package cz.oznameni; 

public class Backgroundoznameni extends Service { 

} 

Odpowiedz

2

Zrobiłem zmianę, należy więc wygodnie otworzyć zapisaną wartość.

Proszę najpierw zainstalować ponownie wtyczkę:

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

To spowoduje zainstalowanie wersji dev. To dlatego, że ten zaktualizowany kod nie został przekazany do NPM (UPDATE: teraz nie jest konieczne korzystanie z wersji dev, wersja na NPM jest w porządku).

do pobierania wartości z klucza, pisałem następujące metody:

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

PREFS_NAME powinna być zadeklarowana następująco:

public static final String PREFS_NAME = "NativeStorage"; 

kontekst powinien być this accessable obrębie Metoda onCreate.

Więc ogólnie rzecz biorąc powinno to wyglądać mniej więcej tak:

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); 
     } 
    } 

UWAGA: Kod nie testowane!

EDYCJA: Jest to dalej udokumentowane w this Github issue.