summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjorn Bringert <bringert@android.com>2009-06-24 18:00:22 +0100
committerBjorn Bringert <bringert@android.com>2009-06-24 21:39:27 +0100
commit23f2be56664296fdc0e7f5fd8c253127ba05690f (patch)
tree782d5115dd4a831c535e97a056a37b17b43a8267
parent0d4b01f4f2ea6a8849f0f97a1f0665ab4142e9b0 (diff)
downloadGoogleSearch-23f2be56664296fdc0e7f5fd8c253127ba05690f.tar.gz
Fail fast if there is no network connection.
Fixes http://b/issue?id=1920886 for GoogleSearch.
-rw-r--r--src/com/android/googlesearch/SuggestionProvider.java31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/com/android/googlesearch/SuggestionProvider.java b/src/com/android/googlesearch/SuggestionProvider.java
index b1d458a..c6ccfb1 100644
--- a/src/com/android/googlesearch/SuggestionProvider.java
+++ b/src/com/android/googlesearch/SuggestionProvider.java
@@ -31,9 +31,12 @@ import org.json.JSONException;
import android.app.SearchManager;
import android.content.ContentProvider;
import android.content.ContentValues;
+import android.content.Context;
import android.content.Intent;
import android.database.AbstractCursor;
import android.database.Cursor;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
@@ -87,10 +90,6 @@ public class SuggestionProvider extends ContentProvider {
return true;
}
- private static ArrayListCursor makeEmptyCursor() {
- return new ArrayListCursor(COLUMNS, new ArrayList<ArrayList>());
- }
-
/**
* This will always return {@link SearchManager#SUGGEST_MIME_TYPE} as this
* provider is purely to provide suggestions.
@@ -109,9 +108,11 @@ public class SuggestionProvider extends ContentProvider {
String[] selectionArgs, String sortOrder) {
String query = selectionArgs[0];
if (TextUtils.isEmpty(query)) {
-
- /* Can't pass back null, things blow up */
- return makeEmptyCursor();
+ return null;
+ }
+ if (!isNetworkConnected()) {
+ Log.i(LOG_TAG, "Not connected to network.");
+ return null;
}
try {
query = URLEncoder.encode(query, "UTF-8");
@@ -170,7 +171,21 @@ public class SuggestionProvider extends ContentProvider {
} catch (JSONException e) {
Log.w(LOG_TAG, "Error", e);
}
- return makeEmptyCursor();
+ return null;
+ }
+
+ private boolean isNetworkConnected() {
+ NetworkInfo networkInfo = getActiveNetworkInfo();
+ return networkInfo != null && networkInfo.isConnected();
+ }
+
+ private NetworkInfo getActiveNetworkInfo() {
+ ConnectivityManager connectivity =
+ (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (connectivity == null) {
+ return null;
+ }
+ return connectivity.getActiveNetworkInfo();
}
private static class SuggestionsCursor extends AbstractCursor {