diff --git a/src/com/android/contacts/ContactsActivity.java b/src/com/android/contacts/ContactsActivity.java
index 90a975f..79ebecb 100644
--- a/src/com/android/contacts/ContactsActivity.java
+++ b/src/com/android/contacts/ContactsActivity.java
@@ -20,6 +20,7 @@
 
 import android.app.Activity;
 import android.content.ContentResolver;
+import android.content.SharedPreferences;
 
 /**
  * A common superclass for Contacts activities that handles application-wide services.
@@ -43,6 +44,19 @@
     }
 
     @Override
+    public SharedPreferences getSharedPreferences(String name, int mode) {
+        InjectedServices services = ContactsApplication.getInjectedServices();
+        if (services != null) {
+            SharedPreferences prefs = services.getSharedPreferences();
+            if (prefs != null) {
+                return prefs;
+            }
+        }
+
+        return super.getSharedPreferences(name, mode);
+    }
+
+    @Override
     public Object getSystemService(String name) {
         Object service = super.getSystemService(name);
         if (service != null) {
diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java
index 288a3d7..f0e2736 100644
--- a/src/com/android/contacts/ContactsApplication.java
+++ b/src/com/android/contacts/ContactsApplication.java
@@ -22,6 +22,7 @@
 import android.app.Application;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.SharedPreferences;
 import android.os.StrictMode;
 import android.preference.PreferenceManager;
 
@@ -53,6 +54,18 @@
     }
 
     @Override
+    public SharedPreferences getSharedPreferences(String name, int mode) {
+        if (sInjectedServices != null) {
+            SharedPreferences prefs = sInjectedServices.getSharedPreferences();
+            if (prefs != null) {
+                return prefs;
+            }
+        }
+
+        return super.getSharedPreferences(name, mode);
+    }
+
+    @Override
     public Object getSystemService(String name) {
         if (sInjectedServices != null) {
             Object service = sInjectedServices.getSystemService(name);
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index a53fce7..0301f44 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -611,6 +611,9 @@
     private void restoreFilter() {
         if (mFilterEnabled) {
             mFilter = ContactListFilter.restoreFromPreferences(mPrefs);
+            if (mFilter == null) {
+                mFilter = new ContactListFilter(ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
+            }
         }
     }
 
diff --git a/src/com/android/contacts/test/InjectedServices.java b/src/com/android/contacts/test/InjectedServices.java
index f059f3a..b74481c 100644
--- a/src/com/android/contacts/test/InjectedServices.java
+++ b/src/com/android/contacts/test/InjectedServices.java
@@ -19,6 +19,7 @@
 import com.google.android.collect.Maps;
 
 import android.content.ContentResolver;
+import android.content.SharedPreferences;
 
 import java.util.HashMap;
 
@@ -30,16 +31,25 @@
 public class InjectedServices {
 
     private ContentResolver mContentResolver;
+    private SharedPreferences mSharedPreferences;
     private HashMap<String, Object> mSystemServices;
 
-    public void setContentResolver(ContentResolver mContentResolver) {
-        this.mContentResolver = mContentResolver;
+    public void setContentResolver(ContentResolver contentResolver) {
+        this.mContentResolver = contentResolver;
     }
 
     public ContentResolver getContentResolver() {
         return mContentResolver;
     }
 
+    public void setSharedPreferences(SharedPreferences sharedPreferences) {
+        this.mSharedPreferences = sharedPreferences;
+    }
+
+    public SharedPreferences getSharedPreferences() {
+        return mSharedPreferences;
+    }
+
     public void setSystemService(String name, Object service) {
         if (mSystemServices == null) {
             mSystemServices = Maps.newHashMap();
