J'ai trouvé un code qui doit vérifier si l'application est hors ligne et doit charger le cache ou en mode en ligne et doit charger l'URL. Ce code je pour cela:Chargement du cache en mode hors connexion dans Android Webview
ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
String weblink = "http://www.google.com";
if(cm.getActiveNetworkInfo().isConnected()){
myWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
myWebView.loadUrl(weblink);
} else {
myWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
myWebView.loadUrl(weblink);
}
Et ce sont mes autorisations:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permisson.ACCESS_WIFI_STATE"/>
Mon problème: Quand je suis en mode avion ou mes connexions sont éteints. La force de l'application se ferme. Quand je suis en ligne, l'application se charge juste et agit normalement ... Qu'est-ce que je me suis trompé?
Ceci est mon logcat:
11-22 10:09:40.310: E/AndroidRuntime(323): FATAL EXCEPTION: main
11-22 10:09:40.310: E/AndroidRuntime(323): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.martijngijselaar.rooster/com.martijngijselaar.rooster.SaxionRoosterActivity}: java.lang.NullPointerException
11-22 10:09:40.310: E/AndroidRuntime(323): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.os.Looper.loop(Looper.java:123)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-22 10:09:40.310: E/AndroidRuntime(323): at java.lang.reflect.Method.invokeNative(Native Method)
11-22 10:09:40.310: E/AndroidRuntime(323): at java.lang.reflect.Method.invoke(Method.java:521)
11-22 10:09:40.310: E/AndroidRuntime(323): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-22 10:09:40.310: E/AndroidRuntime(323): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-22 10:09:40.310: E/AndroidRuntime(323): at dalvik.system.NativeStart.main(Native Method)
11-22 10:09:40.310: E/AndroidRuntime(323): Caused by: java.lang.NullPointerException
11-22 10:09:40.310: E/AndroidRuntime(323): at com.martijngijselaar.rooster.SaxionRoosterActivity.onCreate(SaxionRoosterActivity.java:34)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-22 10:09:40.310: E/AndroidRuntime(323): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-22 10:09:40.310: E/AndroidRuntime(323): ... 11 more
Ok pour le rendre plus facile est le code complet ici:
package com.martijngijselaar.rooster;
import android.app.Activity;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class SaxionRoosterActivity extends Activity {
private static final int MENU1 = Menu.FIRST;
private static final int MENU2 = Menu.FIRST + 1;
private static final int MENU3 = Menu.FIRST + 2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());
// Checken of er een connectie is, zo niet dan de chache laden, zo wel dan gewoon het netwerk laden!!
ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
String weblink = "http://google.com/";
if(cm.getActiveNetworkInfo().isConnected()){
myWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
myWebView.loadUrl(weblink);
} else {
myWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
myWebView.loadUrl(weblink);
}
// Zorgen dat je input kunt gebruiken in de webview
myWebView.requestFocus(View.FOCUS_DOWN);
myWebView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU1, 0, "Wijzig klas");
menu.add(0, MENU2, 0, "Disclaimer");
menu.add(0, MENU3, 0, "Sluiten");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
WebView myWebView = (WebView) findViewById(R.id.webview);
switch (item.getItemId()) {
case MENU1:
myWebView.loadUrl("http://google.nl");
return true;
case MENU2:
myWebView.loadUrl("http://google.nl");
return true;
case MENU3:
finish();
return true;
}
return false;
}
}
Enregistre une erreur ici. – user370305
et spécifiez quelle est la ligne 'SaxionRoosterActivity.java: 34' s'il vous plaît –
Quel est le code à la ligne 34? – C0deAttack