Didn’t work for me.
My working alternative:
Write in LocalStorage:
public static boolean setHtml5LocalStorageValue(String key, String value)
{
if( !Html5LocalStorageValueSupport )
return false;
JavaScript.getCurrent().execute
(
String.format
(
"localStorage.setItem('%s','%s');",
key, value
)
);
return true;
}
Read From Local Storage:
static final boolean Html5LocalStorageValueSupport = true;
public interface Closure { public void execute(String value); }
private static void detectLocalStorageValue(String key, final Closure callback)
{
final String callbackid = "LocalStorage"+UUID.randomUUID().toString().substring(0,8);
JavaScript.getCurrent().addFunction
(
callbackid,
new JavaScriptFunction()
{
private static final long serialVersionUID = -3426072590182105863L;
@Override
public void call(JsonArray arguments)
{
JavaScript.getCurrent().removeFunction(callbackid);
callback.execute(arguments.length() == 0 ? null : arguments.getString(0));
}
}
);
String javaScriptCommand =
String.format
(
"var nameEQ=\"%2$s\";var c=localStorage.getItem(nameEQ); if(c==null) %1$s(''); else %1$s(c);",
callbackid,
key
);
JavaScript.getCurrent().execute(javaScriptCommand);
}
public static boolean getHtml5LocalStorageValue
(
String key,
Closure callBack
)
{
if( !Html5LocalStorageValueSupport )
return false;
detectLocalStorageValue(key, callBack);
return true;
}