Show error when user pulls to refresh without network connection
Bug: 32012818
Test: Manually test when network is connected/not connected.
Change-Id: Ic6aabc8c52dca0886f28dda136f7e6e265cfe1f5
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f92d80f..8ac6f3f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1833,4 +1833,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 0d4b4c0..a73d8e7 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() {
@@ -729,7 +733,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 a748c06..7a99705 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -57,6 +57,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;
@@ -548,6 +549,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));
@@ -570,6 +579,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