0

Я использую следующий файл XML, чтобы реализовать автоматическое предложить моему SearchView:Добавление ограничений на мой searchable.xml

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
android:label="@string/find_contact" 
android:hint="@string/find_contact" 
android:gravity="center" 
android:includeInGlobalSearch="true" 
android:queryAfterZeroResults="true" 
android:searchMode="queryRewriteFromText" 
android:searchSettingsDescription="@string/find_contact" 
android:searchSuggestAuthority="com.android.contacts" 
android:searchSuggestIntentAction="android.provider.Contacts.SEARCH_SUGGESTION_CLICKED" 
android:searchSuggestIntentData="content://com.android.contacts/contacts/lookup" > 

<!-- allow green action key for search-bar and per-suggestion clicks --> 
<actionkey 
    android:keycode="KEYCODE_CALL" 
    android:queryActionMsg="call" 
    android:suggestActionMsg="call" /> 

</searchable> 

Проблема, наряду с предлагая действительные контакты, он обеспечивает предложение по электронной почте идентификаторов в контактов и других «фиктивных» контактов.

Я хочу добавить ограничение, чтобы давать предложения только для действительных телефонных контактов, то есть контактов, у которых есть номер телефона.

Как это реализовать?

ответ

0

На мой взгляд, единственный способ - расширить ContentProvider для запроса ContactProvider для желаемых объектов и назначить его в вашем файле searchable.xml как searchSuggestAuthority.

http://developer.android.com/guide/topics/providers/content-provider-creating.html

Класс ContactsContract.Contacts также содержит столбец HAS_PHONE_NUMBER, так что вы можете запросить у поставщика Контакты путем фильтрации на этом поле с чем-то вроде этого:

context.getContentResolver().query(ContactsContract.Contact.CONTENT_LOOKUP_URI, new String[]{ContactsContract.Contact._ID}, ContactsContract.Contact.HAS_PHONE_NUMBER + "=?", new String[]{"1"}, null), true); 

Я не проверял код раньше, но я надеюсь, что я дам хороший совет;)

Смежные вопросы