From 886c56da94d8ce23ed7150c6b4d5e78c9982f3bd Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Wed, 10 Apr 2013 14:56:50 +0200 Subject: [PATCH] mobile: prevent force close in onStop() method on devices without mobile data connection module --- mobile/AndroidManifest.xml | 4 +-- mobile/res/values/strings.xml | 2 +- .../com/cradle/iitc_mobile/IITC_Mobile.java | 31 +++++++++++++------ 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index c2cc350f..b260dfc2 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="8" + android:versionName="0.2.7" > About About IITC Mobile - + Ingress Intel Total Conversion Mobile

by cradle

diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index aa0e683a..700a8745 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -6,7 +6,6 @@ import com.cradle.iitc_mobile.R; import android.net.ConnectivityManager; import android.net.NetworkInfo; -import android.net.NetworkInfo.State; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -85,17 +84,29 @@ public class IITC_Mobile extends Activity { protected void onStop() { ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - State mobile = conMan.getNetworkInfo(0).getState(); - State wifi = conMan.getNetworkInfo(1).getState(); + NetworkInfo mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); + NetworkInfo wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI); - if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) { - // cancel all current requests - iitc_view.loadUrl("javascript: window.requests.abort()"); - // set idletime to maximum...no need for more - iitc_view.loadUrl("javascript: window.idleTime = 999"); - } else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) { - iitc_view.loadUrl("javascript: window.idleTime = 999"); + // check if Mobile or Wifi module is available..then handle states + // TODO: theory...we do not have to check for a Wifi module...every android device should have one + if (mobile != null) { + Log.d("iitcm", "mobile internet module detected...check states"); + if (mobile.getState() == NetworkInfo.State.CONNECTED || mobile.getState() == NetworkInfo.State.CONNECTING) { + Log.d("iitcm", "connected to mobile net...abort all running requests"); + // cancel all current requests + iitc_view.loadUrl("javascript: window.requests.abort()"); + // set idletime to maximum...no need for more + iitc_view.loadUrl("javascript: window.idleTime = 999"); + } else if (wifi.getState() == NetworkInfo.State.CONNECTED || wifi.getState() == NetworkInfo.State.CONNECTING) { + iitc_view.loadUrl("javascript: window.idleTime = 999"); + } + } else { + Log.d("iitcm", "no mobile internet module detected...check wifi state"); + if (wifi.getState() == NetworkInfo.State.CONNECTED || wifi.getState() == NetworkInfo.State.CONNECTING) { + iitc_view.loadUrl("javascript: window.idleTime = 999"); + } } + Log.d("iitcm", "stopping iitcm"); super.onStop(); }