Loading Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,7 @@ aidl_files := \ frameworks/base/core/java/android/net/Uri.aidl \ frameworks/base/core/java/android/os/Bundle.aidl \ frameworks/base/core/java/android/os/ParcelFileDescriptor.aidl \ frameworks/base/core/java/android/os/ParcelUuid.aidl \ frameworks/base/core/java/android/view/KeyEvent.aidl \ frameworks/base/core/java/android/view/MotionEvent.aidl \ frameworks/base/core/java/android/view/Surface.aidl \ Loading api/current.xml +238 −81 Original line number Diff line number Diff line Loading @@ -3485,6 +3485,17 @@ visibility="public" > </field> <field name="fadeScrollbars" type="int" transient="false" volatile="false" value="16843434" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="fadingEdge" type="int" transient="false" Loading Loading @@ -6763,6 +6774,28 @@ visibility="public" > </field> <field name="scrollbarDefaultDelayBeforeFade" type="int" transient="false" volatile="false" value="16843433" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="scrollbarFadeDuration" type="int" transient="false" volatile="false" value="16843432" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="scrollbarSize" type="int" transient="false" Loading Loading @@ -24284,6 +24317,17 @@ visibility="public" > </field> <field name="SUGGEST_PARAMETER_LIMIT" type="java.lang.String" transient="false" volatile="false" value=""limit"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="SUGGEST_URI_PATH_QUERY" type="java.lang.String" transient="false" Loading Loading @@ -26029,6 +26073,17 @@ visibility="public" > </field> <field name="ACTION_REQUEST_ENABLE" type="java.lang.String" transient="false" volatile="false" value=""android.bluetooth.adapter.action.REQUEST_ENABLE"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="ACTION_SCAN_MODE_CHANGED" type="java.lang.String" transient="false" Loading Loading @@ -27528,87 +27583,6 @@ > </method> </class> <class name="ParcelUuid" extends="java.lang.Object" abstract="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <constructor name="ParcelUuid" type="android.bluetooth.ParcelUuid" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.util.UUID"> </parameter> </constructor> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="fromString" return="android.bluetooth.ParcelUuid" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.lang.String"> </parameter> </method> <method name="getUuid" return="java.util.UUID" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> </package> <package name="android.content" > Loading Loading @@ -105536,6 +105510,87 @@ </parameter> </constructor> </class> <class name="ParcelUuid" extends="java.lang.Object" abstract="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <constructor name="ParcelUuid" type="android.os.ParcelUuid" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.util.UUID"> </parameter> </constructor> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="fromString" return="android.os.ParcelUuid" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.lang.String"> </parameter> </method> <method name="getUuid" return="java.util.UUID" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <interface name="Parcelable" abstract="true" static="false" Loading Loading @@ -113883,6 +113938,17 @@ visibility="public" > </field> <field name="OFFICE_LOCATION" type="java.lang.String" transient="false" volatile="false" value=""data9"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PHONETIC_NAME" type="java.lang.String" transient="false" Loading Loading @@ -115053,6 +115119,27 @@ visibility="public" > </field> <field name="CONTENT_VCARD_TYPE" type="java.lang.String" transient="false" volatile="false" value=""text/x-vcard"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CONTENT_VCARD_URI" type="android.net.Uri" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <class name="ContactsContract.Contacts.AggregationSuggestions" extends="java.lang.Object" Loading Loading @@ -155242,6 +155329,30 @@ <parameter name="views" type="java.util.ArrayList<android.view.View>"> </parameter> </method> <method name="awakenScrollBars" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="awakenScrollBars" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > <parameter name="startDelay" type="int"> </parameter> </method> <method name="bringToFront" return="void" abstract="false" Loading Loading @@ -156891,6 +157002,17 @@ visibility="public" > </method> <method name="isScrollbarFadingEnabled" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isSelected" return="boolean" abstract="false" Loading Loading @@ -158343,6 +158465,19 @@ <parameter name="isScrollContainer" type="boolean"> </parameter> </method> <method name="setScrollbarFadingEnabled" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="fadeScrollbars" type="boolean"> </parameter> </method> <method name="setSelected" return="void" abstract="false" Loading Loading @@ -159676,6 +159811,17 @@ visibility="public" > </method> <method name="getScrollBarFadeDuration" return="int" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getScrollBarSize" return="int" abstract="false" Loading @@ -159687,6 +159833,17 @@ visibility="public" > </method> <method name="getScrollDefaultDelay" return="int" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getScrollFriction" return="float" abstract="false" core/java/android/app/SearchDialog.java +11 −8 Original line number Diff line number Diff line Loading @@ -1709,16 +1709,19 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS public boolean dispatchKeyEventPreIme(KeyEvent event) { if (DBG) Log.d(LOG_TAG, "onKeyPreIme(" + event + ")"); if (mSearchDialog != null && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { KeyEvent.DispatcherState state = getKeyDispatcherState(); if (state != null) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { getKeyDispatcherState().startTracking(event, this); state.startTracking(event, this); return true; } else if (event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled() && getKeyDispatcherState().isTracking(event)) { && !event.isCanceled() && state.isTracking(event)) { mSearchDialog.onBackPressed(); return true; } } } return super.dispatchKeyEventPreIme(event); } } Loading core/java/android/app/SearchManager.java +31 −7 Original line number Diff line number Diff line Loading @@ -27,9 +27,9 @@ import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.server.search.SearchableInfo; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; import android.text.TextUtils; import java.util.List; Loading Loading @@ -1590,6 +1590,12 @@ public class SearchManager */ public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1"; /** * Query parameter added to suggestion queries to limit the number of suggestions returned. * This limit is only advisory and suggestion providers may chose to ignore it. */ public final static String SUGGEST_PARAMETER_LIMIT = "limit"; /** * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION}, * the search dialog will switch to a different suggestion source when the Loading Loading @@ -1980,6 +1986,21 @@ public class SearchManager * @hide because SearchableInfo is not part of the API. */ public Cursor getSuggestions(SearchableInfo searchable, String query) { return getSuggestions(searchable, query, -1); } /** * Gets a cursor with search suggestions. * * @param searchable Information about how to get the suggestions. * @param query The search text entered (so far). * @param limit The query limit to pass to the suggestion provider. This is advisory, * the returned cursor may contain more rows. Pass {@code -1} for no limit. * @return a cursor with suggestions, or <code>null</null> the suggestion query failed. * * @hide because SearchableInfo is not part of the API. */ public Cursor getSuggestions(SearchableInfo searchable, String query, int limit) { if (searchable == null) { return null; } Loading @@ -1991,7 +2012,9 @@ public class SearchManager Uri.Builder uriBuilder = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(authority); .authority(authority) .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() .fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel() // if content path provided, insert it now final String contentPath = searchable.getSuggestPath(); Loading @@ -2012,10 +2035,11 @@ public class SearchManager uriBuilder.appendPath(query); } Uri uri = uriBuilder .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() .fragment("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() .build(); if (limit > 0) { uriBuilder.appendQueryParameter(SUGGEST_PARAMETER_LIMIT, String.valueOf(limit)); } Uri uri = uriBuilder.build(); // finally, make the query return mContext.getContentResolver().query(uri, null, selection, selArgs, null); Loading core/java/android/app/SuggestionsAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter { private static final boolean DBG = false; private static final String LOG_TAG = "SuggestionsAdapter"; private static final int QUERY_LIMIT = 50; private SearchManager mSearchManager; private SearchDialog mSearchDialog; Loading Loading @@ -186,7 +187,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter { mSearchDialog.getWindow().getDecorView().post(mStartSpinnerRunnable); } try { final Cursor cursor = mSearchManager.getSuggestions(mSearchable, query); final Cursor cursor = mSearchManager.getSuggestions(mSearchable, query, QUERY_LIMIT); // trigger fill window so the spinner stays up until the results are copied over and // closer to being ready if (!mGlobalSearchMode && cursor != null) cursor.getCount(); Loading Loading
Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,7 @@ aidl_files := \ frameworks/base/core/java/android/net/Uri.aidl \ frameworks/base/core/java/android/os/Bundle.aidl \ frameworks/base/core/java/android/os/ParcelFileDescriptor.aidl \ frameworks/base/core/java/android/os/ParcelUuid.aidl \ frameworks/base/core/java/android/view/KeyEvent.aidl \ frameworks/base/core/java/android/view/MotionEvent.aidl \ frameworks/base/core/java/android/view/Surface.aidl \ Loading
api/current.xml +238 −81 Original line number Diff line number Diff line Loading @@ -3485,6 +3485,17 @@ visibility="public" > </field> <field name="fadeScrollbars" type="int" transient="false" volatile="false" value="16843434" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="fadingEdge" type="int" transient="false" Loading Loading @@ -6763,6 +6774,28 @@ visibility="public" > </field> <field name="scrollbarDefaultDelayBeforeFade" type="int" transient="false" volatile="false" value="16843433" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="scrollbarFadeDuration" type="int" transient="false" volatile="false" value="16843432" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="scrollbarSize" type="int" transient="false" Loading Loading @@ -24284,6 +24317,17 @@ visibility="public" > </field> <field name="SUGGEST_PARAMETER_LIMIT" type="java.lang.String" transient="false" volatile="false" value=""limit"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="SUGGEST_URI_PATH_QUERY" type="java.lang.String" transient="false" Loading Loading @@ -26029,6 +26073,17 @@ visibility="public" > </field> <field name="ACTION_REQUEST_ENABLE" type="java.lang.String" transient="false" volatile="false" value=""android.bluetooth.adapter.action.REQUEST_ENABLE"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="ACTION_SCAN_MODE_CHANGED" type="java.lang.String" transient="false" Loading Loading @@ -27528,87 +27583,6 @@ > </method> </class> <class name="ParcelUuid" extends="java.lang.Object" abstract="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <constructor name="ParcelUuid" type="android.bluetooth.ParcelUuid" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.util.UUID"> </parameter> </constructor> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="fromString" return="android.bluetooth.ParcelUuid" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.lang.String"> </parameter> </method> <method name="getUuid" return="java.util.UUID" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> </package> <package name="android.content" > Loading Loading @@ -105536,6 +105510,87 @@ </parameter> </constructor> </class> <class name="ParcelUuid" extends="java.lang.Object" abstract="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <constructor name="ParcelUuid" type="android.os.ParcelUuid" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.util.UUID"> </parameter> </constructor> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="fromString" return="android.os.ParcelUuid" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uuid" type="java.lang.String"> </parameter> </method> <method name="getUuid" return="java.util.UUID" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <interface name="Parcelable" abstract="true" static="false" Loading Loading @@ -113883,6 +113938,17 @@ visibility="public" > </field> <field name="OFFICE_LOCATION" type="java.lang.String" transient="false" volatile="false" value=""data9"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PHONETIC_NAME" type="java.lang.String" transient="false" Loading Loading @@ -115053,6 +115119,27 @@ visibility="public" > </field> <field name="CONTENT_VCARD_TYPE" type="java.lang.String" transient="false" volatile="false" value=""text/x-vcard"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CONTENT_VCARD_URI" type="android.net.Uri" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <class name="ContactsContract.Contacts.AggregationSuggestions" extends="java.lang.Object" Loading Loading @@ -155242,6 +155329,30 @@ <parameter name="views" type="java.util.ArrayList<android.view.View>"> </parameter> </method> <method name="awakenScrollBars" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > </method> <method name="awakenScrollBars" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > <parameter name="startDelay" type="int"> </parameter> </method> <method name="bringToFront" return="void" abstract="false" Loading Loading @@ -156891,6 +157002,17 @@ visibility="public" > </method> <method name="isScrollbarFadingEnabled" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isSelected" return="boolean" abstract="false" Loading Loading @@ -158343,6 +158465,19 @@ <parameter name="isScrollContainer" type="boolean"> </parameter> </method> <method name="setScrollbarFadingEnabled" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="fadeScrollbars" type="boolean"> </parameter> </method> <method name="setSelected" return="void" abstract="false" Loading Loading @@ -159676,6 +159811,17 @@ visibility="public" > </method> <method name="getScrollBarFadeDuration" return="int" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getScrollBarSize" return="int" abstract="false" Loading @@ -159687,6 +159833,17 @@ visibility="public" > </method> <method name="getScrollDefaultDelay" return="int" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getScrollFriction" return="float" abstract="false"
core/java/android/app/SearchDialog.java +11 −8 Original line number Diff line number Diff line Loading @@ -1709,16 +1709,19 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS public boolean dispatchKeyEventPreIme(KeyEvent event) { if (DBG) Log.d(LOG_TAG, "onKeyPreIme(" + event + ")"); if (mSearchDialog != null && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { KeyEvent.DispatcherState state = getKeyDispatcherState(); if (state != null) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { getKeyDispatcherState().startTracking(event, this); state.startTracking(event, this); return true; } else if (event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled() && getKeyDispatcherState().isTracking(event)) { && !event.isCanceled() && state.isTracking(event)) { mSearchDialog.onBackPressed(); return true; } } } return super.dispatchKeyEventPreIme(event); } } Loading
core/java/android/app/SearchManager.java +31 −7 Original line number Diff line number Diff line Loading @@ -27,9 +27,9 @@ import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.server.search.SearchableInfo; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; import android.text.TextUtils; import java.util.List; Loading Loading @@ -1590,6 +1590,12 @@ public class SearchManager */ public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1"; /** * Query parameter added to suggestion queries to limit the number of suggestions returned. * This limit is only advisory and suggestion providers may chose to ignore it. */ public final static String SUGGEST_PARAMETER_LIMIT = "limit"; /** * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION}, * the search dialog will switch to a different suggestion source when the Loading Loading @@ -1980,6 +1986,21 @@ public class SearchManager * @hide because SearchableInfo is not part of the API. */ public Cursor getSuggestions(SearchableInfo searchable, String query) { return getSuggestions(searchable, query, -1); } /** * Gets a cursor with search suggestions. * * @param searchable Information about how to get the suggestions. * @param query The search text entered (so far). * @param limit The query limit to pass to the suggestion provider. This is advisory, * the returned cursor may contain more rows. Pass {@code -1} for no limit. * @return a cursor with suggestions, or <code>null</null> the suggestion query failed. * * @hide because SearchableInfo is not part of the API. */ public Cursor getSuggestions(SearchableInfo searchable, String query, int limit) { if (searchable == null) { return null; } Loading @@ -1991,7 +2012,9 @@ public class SearchManager Uri.Builder uriBuilder = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(authority); .authority(authority) .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() .fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel() // if content path provided, insert it now final String contentPath = searchable.getSuggestPath(); Loading @@ -2012,10 +2035,11 @@ public class SearchManager uriBuilder.appendPath(query); } Uri uri = uriBuilder .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() .fragment("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() .build(); if (limit > 0) { uriBuilder.appendQueryParameter(SUGGEST_PARAMETER_LIMIT, String.valueOf(limit)); } Uri uri = uriBuilder.build(); // finally, make the query return mContext.getContentResolver().query(uri, null, selection, selArgs, null); Loading
core/java/android/app/SuggestionsAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter { private static final boolean DBG = false; private static final String LOG_TAG = "SuggestionsAdapter"; private static final int QUERY_LIMIT = 50; private SearchManager mSearchManager; private SearchDialog mSearchDialog; Loading Loading @@ -186,7 +187,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter { mSearchDialog.getWindow().getDecorView().post(mStartSpinnerRunnable); } try { final Cursor cursor = mSearchManager.getSuggestions(mSearchable, query); final Cursor cursor = mSearchManager.getSuggestions(mSearchable, query, QUERY_LIMIT); // trigger fill window so the spinner stays up until the results are copied over and // closer to being ready if (!mGlobalSearchMode && cursor != null) cursor.getCount(); Loading