diff --git a/src/org/fdroid/fdroid/SearchResults.java b/src/org/fdroid/fdroid/SearchResults.java
index 72d71efd2..a9ea1d02b 100644
--- a/src/org/fdroid/fdroid/SearchResults.java
+++ b/src/org/fdroid/fdroid/SearchResults.java
@@ -48,23 +48,22 @@ public class SearchResults extends ListActivity {
 
     private AppListAdapter applist;
 
-    private String mQuery;
-
-    protected void getQuery(Intent intent) {
+    protected String getQuery() {
+        Intent intent = getIntent();
+        String query;
         if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
-            mQuery = intent.getStringExtra(SearchManager.QUERY);
+            query = intent.getStringExtra(SearchManager.QUERY);
         } else {
             Uri data = intent.getData();
-            if (data.isHierarchical()) {
-                mQuery = data.getQueryParameter("q");
-                if (mQuery.startsWith("pname:"))
-                    mQuery = mQuery.substring(6);
+            if (data != null && data.isHierarchical()) {
+                query = data.getQueryParameter("q");
+                if (query != null && query.startsWith("pname:"))
+                    query = query.substring(6);
             } else {
-                mQuery = data.getEncodedSchemeSpecificPart();
+                query = data.getEncodedSchemeSpecificPart();
             }
         }
-        if (mQuery == null || mQuery.length() == 0)
-            finish();
+        return query;
     }
 
     @Override
@@ -79,25 +78,34 @@ public class SearchResults extends ListActivity {
 
         // Start a search by just typing
         setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
+    }
 
-        getQuery(getIntent());
-
+    @Override
+    protected void onResume() {
+        super.onResume();
         updateView();
     }
 
     @Override
     protected void onNewIntent(Intent intent) {
-        getQuery(intent);
         super.onNewIntent(intent);
-        updateView();
+        setIntent(intent);
     }
 
     private void updateView() {
 
+        String query = getQuery();
+
+        if (query != null)
+            query = query.trim();
+
+        if (query == null || query.length() == 0)
+            finish();
+
         List<String> matchingids = new ArrayList<String>();
         try {
             DB db = DB.getDB();
-            matchingids = db.doSearch(mQuery);
+            matchingids = db.doSearch(query.trim());
         } catch (Exception ex) {
             Log.d("FDroid", "Search failed - " + ex.getMessage());
         } finally {
@@ -107,7 +115,6 @@ public class SearchResults extends ListActivity {
         List<DB.App> apps = new ArrayList<DB.App>();
         List<DB.App> allApps = ((FDroidApp) getApplication()).getApps();
         for (DB.App app : allApps) {
-            boolean include = false;
             for (String id : matchingids) {
                 if (id.equals(app.id)) {
                     apps.add(app);
@@ -119,14 +126,14 @@ public class SearchResults extends ListActivity {
         TextView tv = (TextView) findViewById(R.id.description);
         String headertext;
         if (apps.size() == 0) {
-            headertext = getString(R.string.searchres_noapps, mQuery);
+            headertext = getString(R.string.searchres_noapps, query);
         } else if (apps.size() == 1) {
-            headertext = getString(R.string.searchres_oneapp, mQuery);
+            headertext = getString(R.string.searchres_oneapp, query);
         } else {
-            headertext = getString(R.string.searchres_napps, apps.size(), mQuery);
+            headertext = getString(R.string.searchres_napps, apps.size(), query);
         }
         tv.setText(headertext);
-        Log.d("FDroid", "Search for '" + mQuery + "' returned " + apps.size()
+        Log.d("FDroid", "Search for '" + query + "' returned " + apps.size()
                 + " results");
         applist.clear();
         for (DB.App app : apps) {