Как загрузить или получить веб-страницу в онлайн-режиме и в автономном режиме в приложении для Android?
Мне нужно загрузить и получить веб-страницу HTML во внутренней или внешней памяти устройства Android. Мне нужно загрузить и загрузить веб-страницу в android с помощью веб-представления.
Существует много повторяющихся вопросов, подобных загрузке или сохранению веб-страницы. Но ни один из ответов не помог мне. Направляй меня!
Спасибо заранее.
Ответы
Ответ 1
Я не знаю, подходит ли это решение для вашего. Если вы хотите просмотреть веб-сайт в автономном режиме и онлайн-моде, вы можете использовать веб-искатель для извлечения всех данных с веб-сайта. Здесь - пример проекта для веб-браузера для android. После этого вы можете загрузить веб-сайт из URL-адреса или локальной памяти на основе вашей доступности Интернета.
Ответ 2
Получить HTML-код из загруженного WebView
Сохранить строку как html файл android
С двумя ссылками вы можете достичь своего требования,
вы можете сохранить содержимое html в файл и затем сохранить его во внутреннем хранилище, а затем загрузить в автономный режим.
Ответ 3
A WebView
может загружать и отображать страницы remote
и local
html plus, а также поддерживает 'data' scheme URL
.
Параметры хранилища
Общие настройки (не полезно в вашем случае)
Хранить частные примитивные данные в парах ключ-значение.
Внутреннее хранилище (рекомендуется для вашего случая)
Храните личные данные в памяти устройства.
Внешнее хранилище ( может использовать в вашем случае, но не рекомендуется)
Сохранять общедоступные данные на общем внешнем хранилище.
Базы данных SQLite ( может использовать в вашем случае, но не рекомендуется)
Хранить структурированные данные в частной базе данных.
Сетевое подключение ( может использовать в вашем случае, но не будет работать в автономном режиме)
Храните данные в сети с помощью собственного сетевого сервера.
Ответ 4
Возможно, вам захочется использовать метод shouldInterceptRequest
WebViewClient
, который использует его в WebView
. Он позволяет вам знать все ресурсы, которые загружаются во время процедуры загрузки html. Итак, вы можете сделать что-то вроде этого:
WebViewClient webViewClient = new WebViewClient() {
@TargetApi(VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
WebResourceResponse response = null;
if ("GET".equals(request.getMethod())) {
try {
response = getWebResponse(view.getContext().getApplicationContext(), request.getUrl().toString());
} catch (Exception e) {
Log.e(TAG, "Error while overriding getting web response", e);
}
}
return response;
}
@SuppressWarnings("deprecation")
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
WebResourceResponse response = null;
try {
response = getWebResponse(view.getContext().getApplicationContext(), url);
} catch (Exception e) {
Log.e(TAG, "Error while overriding getting web response", e);
}
return response;
}
WebResourceResponse getWebResponse(Context context, String url) {
// YOUR IMPLEMENTATION that will save resource located at passed url
}
}
webView.setWebViewClient(webViewClient);
Ответ 5
Это похоже на простой механизм кэширования веб-просмотра.
попробуйте это
WebView webView = new WebView( context );
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setJavaScriptEnabled( true );
webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
if ( !isNetworkAvailable() ) { // loading offline
webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
}
Метод isStetworkAvailable() проверяет активное сетевое подключение:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
webView.loadUrl( " http://www.google.com" );
Наконец, не забудьте добавить следующие три разрешения на ваш AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Ответ 6
сохранить веб-страницу в кэш-памяти;
WebView webView = new WebView( context );
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setJavaScriptEnabled( true );
webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
Проверьте эту ссылку Веб-сайт загрузки WebView, когда он загружен, загрузите локальный файл в автономном режиме