ProgramingTip

WebView는 온라인 일 때 웹 사이트를로드하고 오프라인 일 때 로컬 파일을로드합니다.

bestdevel 2020. 11. 4. 08:11
반응형

WebView는 온라인 일 때 웹 사이트를로드하고 오프라인 일 때 로컬 파일을로드합니다.


나는 Java 프로그래밍에 익숙하지 않지만 여기에서 내 문제에 대한 몇 가지 솔루션을 살펴보고 내 경우에 맞는 솔루션을 선택하고 코드를 찾을 수 없습니다.

WebView전화가 온라인 일 때 온라인 페이지 (예 : Google)를 온라인 전화가 오프라인 일 때 로컬 HTML 페이지를 갖고 싶어 합니다.

동시에 오프라인 로컬 페이지가 전화가 인터넷에 마지막으로 연결될 때 업데이트 전화가 온라인 일 로컬 페이지를 항상 쓰도록하고 싶습니다.

어디에 있습니까? 올바른 방향을 간단한 방법이 도움이 될 수 있습니다.

감사합니다.


그것은 나에게 간단한 웹뷰 캐싱처럼 들립니다.

다음은 원하는 작업을 수행해야합니다.

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 );
}

webView.loadUrl( "http://www.google.com" );

이 메서드 isNetworkAvailable()는 활성 네트워크 연결을 확인합니다.

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

마지막으로에 다음 세 가지 권한을 추가하는 것을 잊지 않습니다 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"/>

WebView를 기본적으로 캐시 할 수 있습니다. 페이지 헤더에 다음 필드가 포함 된 경우 WebView는 해당 페이지의 콘텐츠를 캐시 할 수 없습니다. 캐시 제어 : 저장소 없음, 캐시 없음 Pragma : 캐시 없음

이 경우 캐싱 문제를 해결해야하는 서버의 페이지 속성을 수정해야합니다.

참고 URL : https://stackoverflow.com/questions/14670638/webview-load-website-when-online-load-local-file-when-offline

반응형