diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 6f47788..5583466 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -1185,6 +1185,12 @@
         if (appSearchData == null) {
             appSearchData = createGoogleSearchSourceBundle(GOOGLE_SEARCH_SOURCE_TYPE);
         }
+
+        SearchEngine searchEngine = mSettings.getSearchEngine();
+        if (searchEngine != null && !searchEngine.supportsVoiceSearch()) {
+            appSearchData.putBoolean(SearchManager.DISABLE_VOICE_SEARCH, true);
+        }
+
         super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
     }
 
diff --git a/src/com/android/browser/search/DefaultSearchEngine.java b/src/com/android/browser/search/DefaultSearchEngine.java
index 42d274d..c939de7 100644
--- a/src/com/android/browser/search/DefaultSearchEngine.java
+++ b/src/com/android/browser/search/DefaultSearchEngine.java
@@ -67,9 +67,9 @@
         String packageName = mSearchable.getSearchActivity().getPackageName();
         // Use "google" as name to avoid showing Google twice (app + OpenSearch)
         if ("com.google.android.googlequicksearchbox".equals(packageName)) {
-            return "google";
+            return SearchEngine.GOOGLE;
         } else if ("com.android.quicksearchbox".equals(packageName)) {
-            return "google";
+            return SearchEngine.GOOGLE;
         } else {
             return packageName;
         }
@@ -110,6 +110,10 @@
     public void close() {
     }
 
+    public boolean supportsVoiceSearch() {
+        return getName().equals(SearchEngine.GOOGLE);
+    }
+
     @Override
     public String toString() {
         return "ActivitySearchEngine{" + mSearchable + "}";
diff --git a/src/com/android/browser/search/OpenSearchSearchEngine.java b/src/com/android/browser/search/OpenSearchSearchEngine.java
index e78a93c..3c1cd5b 100644
--- a/src/com/android/browser/search/OpenSearchSearchEngine.java
+++ b/src/com/android/browser/search/OpenSearchSearchEngine.java
@@ -196,6 +196,10 @@
         mHttpClient.close();
     }
 
+    public boolean supportsVoiceSearch() {
+        return getName().equals(SearchEngine.GOOGLE);
+    }
+
     private boolean isNetworkConnected(Context context) {
         NetworkInfo networkInfo = getActiveNetworkInfo(context);
         return networkInfo != null && networkInfo.isConnected();
diff --git a/src/com/android/browser/search/SearchEngine.java b/src/com/android/browser/search/SearchEngine.java
index 3d24d2e..b7e1859 100644
--- a/src/com/android/browser/search/SearchEngine.java
+++ b/src/com/android/browser/search/SearchEngine.java
@@ -24,6 +24,9 @@
  */
 public interface SearchEngine {
 
+    // Used if the search engine is Google
+    static final String GOOGLE = "google";
+
     /**
      * Gets the unique name of this search engine.
      */
@@ -54,4 +57,8 @@
      */
     public void close();
 
+    /**
+     * Checks whether this search engine supports voice search.
+     */
+    public boolean supportsVoiceSearch();
 }
