1
0
mirror of https://github.com/nerzhul/ownCloud-SMS-App.git synced 2025-06-12 10:26:20 +00:00

Crashfix when data is not available

This commit is contained in:
Loic Blot 2015-03-23 20:17:30 +01:00
parent 1a0e887179
commit 58b9ed61ff
3 changed files with 30 additions and 23 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.unix_experience.owncloud_sms" package="fr.unix_experience.owncloud_sms"
android:versionCode="22" android:versionCode="24"
android:versionName="0.17.3"> android:versionName="0.18.1">
<!-- From Android 4.0 to 5.1 --> <!-- From Android 4.0 to 5.1 -->
<uses-sdk <uses-sdk

View File

@ -33,6 +33,7 @@ import org.json.JSONArray;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment; import android.app.Fragment;
import android.app.FragmentManager; import android.app.FragmentManager;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@ -43,6 +44,7 @@ import android.support.v4.view.ViewPager;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast;
import fr.unix_experience.owncloud_sms.R; import fr.unix_experience.owncloud_sms.R;
import fr.unix_experience.owncloud_sms.engine.ASyncTask.SyncTask; import fr.unix_experience.owncloud_sms.engine.ASyncTask.SyncTask;
import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor; import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor;
@ -160,19 +162,23 @@ public class MainActivity extends Activity {
} }
public void syncAllMessages(final View view) { public void syncAllMessages(final View view) {
final ConnectivityMonitor cMon = new ConnectivityMonitor(getApplicationContext()); final Context ctx = getApplicationContext();
final ConnectivityMonitor cMon = new ConnectivityMonitor(ctx);
if (cMon.isValid()) { if (cMon.isValid()) {
// Now fetch messages since last stored date // Now fetch messages since last stored date
final JSONArray smsList = new SmsFetcher(getApplicationContext()) final JSONArray smsList = new SmsFetcher(ctx)
.bufferizeMessagesSinceDate((long) 0); .bufferizeMessagesSinceDate((long) 0);
if (smsList != null) { if (smsList != null) {
final OCSMSNotificationManager nMgr = new OCSMSNotificationManager(getApplicationContext()); final OCSMSNotificationManager nMgr = new OCSMSNotificationManager(ctx);
nMgr.setSyncProcessMsg(); nMgr.setSyncProcessMsg();
new SyncTask(getApplicationContext(), smsList).execute(); new SyncTask(getApplicationContext(), smsList).execute();
} }
} }
else {
Toast.makeText(ctx, ctx.getString(R.string.err_sync_no_connection_available), Toast.LENGTH_SHORT).show();
}
} }
public void openGooglePlayStore(final View view) { public void openGooglePlayStore(final View view) {

View File

@ -12,36 +12,39 @@ package fr.unix_experience.owncloud_sms.engine;
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details. * GNU Affero General Public License for more details.
* *
* You should have received a copy of the GNU Affero General Public License * You should have received a copy of the GNU Affero General Public License
*/ */
import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
public class ConnectivityMonitor { public class ConnectivityMonitor {
public ConnectivityMonitor(Context context) { public ConnectivityMonitor(final Context context) {
_context = context; _context = context;
} }
// Valid connection = WiFi or Mobile data // Valid connection = WiFi or Mobile data
public boolean isValid() { public boolean isValid() {
if (_cMgr == null) { if (_cMgr == null) {
_cMgr = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); _cMgr = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
} }
final android.net.NetworkInfo niWiFi = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); final android.net.NetworkInfo niWiFi = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo niMobile = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); final android.net.NetworkInfo niMobile = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (niWiFi.isAvailable() || niMobile.isAvailable()) { if (niWiFi.isAvailable() || niMobile.isAvailable()) {
// Load the connectivity manager to determine on which network we are connected // Load the connectivity manager to determine on which network we are connected
NetworkInfo netInfo = _cMgr.getActiveNetworkInfo(); final NetworkInfo netInfo = _cMgr.getActiveNetworkInfo();
if (netInfo == null) {
OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(_context); return false;
}
final OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(_context);
// Check // Check
switch (netInfo.getType()) { switch (netInfo.getType()) {
case ConnectivityManager.TYPE_WIFI: case ConnectivityManager.TYPE_WIFI:
@ -58,7 +61,7 @@ public class ConnectivityMonitor {
case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_HSPAP: case TelephonyManager.NETWORK_TYPE_HSPAP:
@ -71,13 +74,11 @@ public class ConnectivityMonitor {
default: default:
return prefs.syncInOtherModes(); return prefs.syncInOtherModes();
} }
} }
return false; return false;
} }
private ConnectivityManager _cMgr; private ConnectivityManager _cMgr;
private Context _context; private final Context _context;
} }