Show error when user pulls to refresh without network connection
am: 395c3f8baf
Change-Id: I0862ebf05e1fc4ea8bfc460492eb1b62f61f1100
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a6c3efd..3a2fa2d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1853,4 +1853,7 @@
<!-- Confirm button text for dialog to turn auto-sync on [CHAR LIMIT=30] -->
<string name="turn_auto_sync_on_dialog_confirm_btn">Turn on</string>
+
+ <!-- No network connection error message [CHAR LIMIT=50] -->
+ <string name="connection_error_message">No connection</string>
</resources>
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index a496dd0..4740cf4 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -182,6 +182,10 @@
}
}
+ public void showConnectionErrorMsg() {
+ Snackbar.make(mLayoutRoot, R.string.connection_error_message, Snackbar.LENGTH_LONG).show();
+ }
+
private final ContactListFilterListener mFilterListener = new ContactListFilterListener() {
@Override
public void onContactListFilterChanged() {
@@ -733,7 +737,6 @@
}).show();
}
-
private class SaveServiceListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index c128009..8143b9e 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -58,6 +58,7 @@
import com.android.contacts.ContactsDrawerActivity;
import com.android.contacts.R;
import com.android.contacts.activities.ActionBarAdapter;
+import com.android.contacts.activities.PeopleActivity;
import com.android.contacts.common.Experiments;
import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.list.ContactEntryListFragment;
@@ -557,6 +558,14 @@
@Override
public void onRefresh() {
mHandler.removeCallbacks(mCancelRefresh);
+
+ final boolean isNetworkConnected = SyncUtil.isNetworkConnected(getContext());
+ if (!isNetworkConnected) {
+ mSwipeRefreshLayout.setRefreshing(false);
+ ((PeopleActivity)getActivity()).showConnectionErrorMsg();
+ return;
+ }
+
syncContacts(getFilter());
mHandler.postDelayed(mCancelRefresh, Flags.getInstance(getContext())
.getInteger(Experiments.PULL_TO_REFRESH_CANCEL_REFRESH_MILLIS));
@@ -579,6 +588,7 @@
if (filter == null) {
return;
}
+
final Bundle bundle = new Bundle();
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
diff --git a/src/com/android/contacts/util/SyncUtil.java b/src/com/android/contacts/util/SyncUtil.java
index 6c17c05..34e6e8c 100644
--- a/src/com/android/contacts/util/SyncUtil.java
+++ b/src/com/android/contacts/util/SyncUtil.java
@@ -18,6 +18,8 @@
import android.accounts.Account;
import android.content.ContentResolver;
import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.provider.ContactsContract;
import com.android.contacts.common.model.account.GoogleAccountType;
@@ -90,4 +92,11 @@
}
return SYNC_SETTING_SYNC_ON;
}
+
+ public static boolean isNetworkConnected(Context context) {
+ ConnectivityManager cm =
+ (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+ return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
+ }
}
\ No newline at end of file