В настоящее время я разрабатываю приложение для Android для планшета и хочу рассмотреть случай использования: «если нет подключения к Интернету, я хочу, чтобы приложение работало как обычно».
Я использовалwebview, чтобы загрузить опрос в приложении, чтобы после установки в наших магазинах мне не приходилось устанавливать новую версию каждый раз, когда нам потребуется новый макияж или добавить вопросы.
Чтобы охватить случай, когда нетВ связи с этим я сохраняю веб-архив, который загружаю, если нет Wi-Fi, когда мне нужно загрузить веб-страницу.
private void setMainView() {
mainview = (WebView) findViewById(R.id.wvMain);
WebSettings webSettings = mainview.getSettings();
webSettings.setLightTouchEnabled(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(this);
mainview.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
if (DetectConnection.checkInternetConnection(this)){
mainview.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
File webpage = new File(context.getExternalFilesDir(Environment.DIRECTORY_DCIM).getAbsolutePath()+ File.separator +"home.mht");
mainview.saveWebArchive(webpage.toString());
editor.putString(BuildConfig.HOME_PAGE_WEB_ARCHIVE_FILE,webpage.toString() );
editor.commit();
}
});
mainview.loadUrl(BuildConfig.SERVER_URL + BuildConfig.HOME_PAGE);
}
else{
String filename = getSharedPreferences(BuildConfig.PREFERENCES_NAME, 0).getString(BuildConfig.HOME_PAGE_WEB_ARCHIVE_FILE,null);
mainview.setWebChromeClient(new WebChromeClient());
mainview.loadUrl("file:///"+filename);
}
}
Единственная проблема заключается в том, что веб-архив зависает при загрузке.Я много чего пробовал, чтобы это работало, но решение ускользает от меня.
Когда я переключаю свое приложение в плоскостной режим и перезагружаю приложение, я вижу домашнюю страницу в порядке, но события нажатия не работают.Мой интерфейс Javascript для Android также не работает, поскольку я тестировал отправку Toast для отладки, когда приложение завершает загрузку, поэтому я предполагаю, что javascript не работает в моем веб-архиве, или, возможно, веб-архив не включает CSS и Javascript, полученные от другихвеб-сайт, такой как W3.css и JQuery?
Может быть, если я использую локальную версию этих ресурсов, они будут включены в веб-архив.
Любые предложения приветствуются.
Спасибо