Подтвердить что ты не робот

Как загрузить или получить веб-страницу в онлайн-режиме и в автономном режиме в приложении для Android?

Мне нужно загрузить и получить веб-страницу HTML во внутренней или внешней памяти устройства Android. Мне нужно загрузить и загрузить веб-страницу в android с помощью веб-представления.

Существует много повторяющихся вопросов, подобных загрузке или сохранению веб-страницы. Но ни один из ответов не помог мне. Направляй меня!

Спасибо заранее.

4b9b3361

Ответ 1

Я не знаю, подходит ли это решение для вашего. Если вы хотите просмотреть веб-сайт в автономном режиме и онлайн-моде, вы можете использовать веб-искатель для извлечения всех данных с веб-сайта. Здесь - пример проекта для веб-браузера для android. После этого вы можете загрузить веб-сайт из URL-адреса или локальной памяти на основе вашей доступности Интернета.

Ответ 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, когда он загружен, загрузите локальный файл в автономном режиме