2013-06-23 2 views
3

Мне нужно загрузить mWebview из Интернета, когда доступен доступ в Интернет. И когда его недоступно, ему необходимо загрузить из кэша. У меня есть что-то, но это не загружает сайт вообщеЗагрузить веб-представление из кеша

Пожалуйста, помогите мне?

Разрешение Айв уже добавлено:
- android.permission.INTERNET
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.ACCESS_NETWORK_STATE

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


@SuppressLint("SetJavaScriptEnabled") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Layout Webview 
    mWebview = new WebView(this); 
    // Broadcast 
    Toast.makeText(this, "Laden van roosterwijzigingen.", 
    Toast.LENGTH_SHORT).show(); 
    // Enable JavaScript 
    mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript 
    mWebview.setHorizontalScrollBarEnabled(false); 
    mWebview.getSettings().setAppCacheMaxSize(5 * 1024 * 1024); // 5MB 
    mWebview.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath()); 
    mWebview.getSettings().setAllowFileAccess(true); 
    mWebview.getSettings().setAppCacheEnabled(true); 
    mWebview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); // load online by default 
    final Activity activity = this; 
    // Make WebClient 
    mWebview.setWebViewClient(new WebViewClient() { 
    // Trace Errors 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
    Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
    } 
}); 
    if (!isNetworkAvailable()) { // loading offline 
     mWebview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    } 

    mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php"); 

} 

ответ

0

Я проверил ваш код и кэширование работает отлично (проверено с http://yahoo.com). Ваша проблема должна быть в методе isNetworkAvailable(), и поэтому
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK) не вызывается.

Чтобы проверить это, необходимо, чтобы isNetworkAvailable() всегда возвращал false и помещал ваше устройство в режим полета после первой загрузки осадки один раз.

+0

Это не по возможности, потому что оно не груз вообще. даже если у меня есть соединение Wi-Fi –

-1
if (!isNetworkAvailable()) { // loading offline 
    mWebview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
style="color:red">}// move this bracket 

mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php"); 
// to here } 
} 
+1

Ваш вопрос имеет серьезные проблемы с форматированием и его трудно прочитать. Вы можете отредактировать его, чтобы использовать форматирование кода. Объяснение всегда полезно! :) –

+3

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего после. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – gunr2171