Note that there are some explanatory texts on larger screens.

plurals
  1. POLoading cache in offline mode in Android Webview
    primarykey
    data
    text
    <p>I found a code that should check wether the application is offline and has to load the cache or when in online mode and has to load url. This is the code I used for that:</p> <pre><code>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); } </code></pre> <p>And these are my permissions:</p> <pre><code>&lt;uses-permission android:name="android.permission.INTERNET"/&gt; &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt; &lt;uses-permission android:name="android.permisson.ACCESS_WIFI_STATE"/&gt; </code></pre> <p>My problem: When I'm in airplane mode or my connections are off. The app force closes. When I'm online the app just loads and acts normal... What did I wrong?</p> <p>This is my logcat:</p> <pre><code>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 </code></pre> <p>Okay to make it more easier here is the whole code:</p> <pre><code>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; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload