Use resource ID for searchable description

Before, SearchableInfo read and cached the localized
searchable description, which meant that it was not updated
on locale changes. Now SearchableInfo only holds the resource
ID.

SearchableInfo is a new API in Froyo, so it's ok to change.

Part of http://b/issue?id=2175247

Change-Id: I1898f7895b9172f58419d906ad741cb7dd1e7252
diff --git a/api/current.xml b/api/current.xml
index 7169d0d..47033c5 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -25322,8 +25322,8 @@
  visibility="public"
 >
 </method>
-<method name="getSettingsDescription"
- return="java.lang.String"
+<method name="getSettingsDescriptionId"
+ return="int"
  abstract="false"
  native="false"
  synchronized="false"
diff --git a/core/java/android/app/SearchableInfo.java b/core/java/android/app/SearchableInfo.java
index 9897742..4496354 100644
--- a/core/java/android/app/SearchableInfo.java
+++ b/core/java/android/app/SearchableInfo.java
@@ -73,7 +73,7 @@
     private final boolean mIncludeInGlobalSearch;
     private final boolean mQueryAfterZeroResults;
     private final boolean mAutoUrlDetect;
-    private final String mSettingsDescription;
+    private final int mSettingsDescriptionId;
     private final String mSuggestAuthority;
     private final String mSuggestPath;
     private final String mSuggestSelection;
@@ -155,11 +155,11 @@
     }
     
     /**
-     * Gets the description to use for this source in system search settings, or null if
-     * none has been specified.
+     * Gets the resource ID of the description string to use for this source in system search
+     * settings, or {@code 0} if none has been specified.
      */
-    public String getSettingsDescription() {
-        return mSettingsDescription;
+    public int getSettingsDescriptionId() {
+        return mSettingsDescriptionId;
     }
 
     /**
@@ -311,8 +311,8 @@
         mAutoUrlDetect = a.getBoolean(
                 com.android.internal.R.styleable.Searchable_autoUrlDetect, false);
 
-        mSettingsDescription = a.getString(
-                com.android.internal.R.styleable.Searchable_searchSettingsDescription);
+        mSettingsDescriptionId = a.getResourceId(
+                com.android.internal.R.styleable.Searchable_searchSettingsDescription, 0);
         mSuggestAuthority = a.getString(
                 com.android.internal.R.styleable.Searchable_searchSuggestAuthority);
         mSuggestPath = a.getString(
@@ -495,7 +495,7 @@
                         + ",suggestAuthority=" + searchable.getSuggestAuthority()
                         + ",target=" + searchable.getSearchActivity().getClassName()
                         + ",global=" + searchable.shouldIncludeInGlobalSearch()
-                        + ",settingsDescription=" + searchable.getSettingsDescription()
+                        + ",settingsDescription=" + searchable.getSettingsDescriptionId()
                         + ",threshold=" + searchable.getSuggestThreshold());
             } else {
                 Log.d(LOG_TAG, "Checked " + activityInfo.name + ", no searchable meta-data");
@@ -746,7 +746,7 @@
         mQueryAfterZeroResults = in.readInt() != 0;
         mAutoUrlDetect = in.readInt() != 0;
         
-        mSettingsDescription = in.readString();
+        mSettingsDescriptionId = in.readInt();
         mSuggestAuthority = in.readString();
         mSuggestPath = in.readString();
         mSuggestSelection = in.readString();
@@ -784,7 +784,7 @@
         dest.writeInt(mQueryAfterZeroResults ? 1 : 0);
         dest.writeInt(mAutoUrlDetect ? 1 : 0);
         
-        dest.writeString(mSettingsDescription);
+        dest.writeInt(mSettingsDescriptionId);
         dest.writeString(mSuggestAuthority);
         dest.writeString(mSuggestPath);
         dest.writeString(mSuggestSelection);