如何在安卓系统中使用T9联系人号码搜索

4

我该如何通过键盘输入的号码来搜索联系人?我认为安卓已经实现了T9算法,但是我该如何使用这个实现呢?


显然在4.3中有类似的功能:http://android.stackexchange.com/questions/45008/how-to-search-contacts-with-t9-dialer-on-nexus-4 - njzk2
一种方法是生成所有的排列并尝试将in (<permutations>)放入请求的where子句中,但我不知道性能如何。 - njzk2
你实际想要什么?当输入搜索字符串时,你想在列表中显示建议吗? - stinepike
@StinePike 是的,我想要在列表中显示建议。 - Feras Odeh
1个回答

0

我还没测试过这个……也许这个能有帮助……

    String contactId = "";
String contactName = "";

private void retrieveContactRecord(String phoneNo) {
    try{
        Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNo));
        String[] projection = new String[] { ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.DISPLAY_NAME };
        String selection = null;
        String[] selectionArgs = null;
        String sortOrder = ContactsContract.PhoneLookup.DISPLAY_NAME+ " COLLATE LOCALIZED ASC";
        ContentResolver cr = mContext.getContentResolver();
        if(cr != null){
            Cursor resultCur = cr.query(uri, projection, selection, selectionArgs, sortOrder);
            if(resultCur != null){
                while (resultCur.moveToNext()) {
                    contactId = resultCur.getString(resultCur.getColumnIndex(ContactsContract.PhoneLookup._ID));
                    contactName = resultCur.getString(resultCur.getColumnIndexOrThrow(ContactsContract.PhoneLookup.DISPLAY_NAME));
                    Log.e("Info","Contact Id : "+contactId);
                    Log.e("Info","Contact Display Name : "+contactName);
                    break;
                }
                resultCur.close();
            }
        }
    }
    catch(Exception sfg){
        Log.e("Error", "Error in loadContactRecord : "+sfg.toString());
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接