diff options
author | Bjorn Bringert <bringert@android.com> | 2009-06-24 18:00:22 +0100 |
---|---|---|
committer | Bjorn Bringert <bringert@android.com> | 2009-06-24 21:39:27 +0100 |
commit | 23f2be56664296fdc0e7f5fd8c253127ba05690f (patch) | |
tree | 782d5115dd4a831c535e97a056a37b17b43a8267 | |
parent | 0d4b01f4f2ea6a8849f0f97a1f0665ab4142e9b0 (diff) | |
download | GoogleSearch-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.java | 31 |
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 { |