Я занимаюсь созданием мобильного приложения для клиента с помощью Buzztouch, поэтому html-страницы не входят в приложение, они загружаются с сервера через JSON.HTML5 localStorage не работает в Android WebView
Клиент хотел бы иметь экран в приложении, где пользователи могут вводить данные в расписание и хранить их на телефоне.
Я пытаюсь сделать это с помощью LocalStorage, и есть настройки все разрешения, и т.д., но я получаю следующее сообщение об ошибке при попытке чтения или записи в LocalStorage на странице:
«SecurityError: Не удалось прочитайте свойство «localStorage;» в «Окно»: доступ запрещен для этого документа ».
Это находится на Asus Memopad работает Android версии 5.
Вот разрешения в файле манифеста:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
Вот настройки WebView:
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/");
webView.getSettings().setDomStorageEnabled(true);
Я ve попробовал тот же самый код на более раннем Android-планшете, работающем под управлением Android версии 2.3, и я не получаю эту ошибку, localStorage отлично работает.
Я также пробовал на iPhone, и он отлично работает.
Я даже попытался скопировать код на стандартную веб-страницу, и он отлично работает в браузере на планшете, но webView все равно не нравится.
Я оглядывался по сети в течение нескольких часов, и до сих пор я не нашел решения для этого.
Любые идеи?
UPDATE:
Вот некоторые из кода JQuery, он имел в виду, чтобы проверить, если LocalStorage доступен, и нагрузка в элементе, если он установлен.
try {
if(typeof(Storage) !== "undefined") {
try {
if(localStorage.getItem("storage") !== null) {
storage = JSON.parse(localStorage.getItem("storage"));
}
} catch(e) {
$("#error").html($("#error").html() + " " + e + "<br>");
$("#error").css("display", "block");
}
} else {
$("#log").html("HTML5 Storage is not working.");
}
} catch(e) {
$("#error").html($("#error").html() + " " + e + "<br>");
$("#error").css("display", "block");
}
Это то, что бросает ошибку на нагрузке, так как это в .ready разделе $ (документ).
Почему, черт возьми, вы используете жестко закодированные пути? вы знаете, что у вас может быть несколько учетных записей на Android 4.2+? – Selvin