0

我开始为 api 13 构建我的应用程序,因为我认为它对于大多数用户来说足够高效。但我将其更改为 api 10。然后以下代码停止工作`

             String empName=data.getStringExtra("name");
             String hourPay=data.getStringExtra("hourPay");
             String key="";
             String id=""; 

            Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, empName);
            Cursor idCursor = getContentResolver().query(lookupUri, null, null, null, null);                

            idCursor.moveToFirst();
            id = idCursor.getString(idCursor.getColumnIndex(ContactsContract.Contacts._ID));
            key = idCursor.getString(idCursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));`

问题是它只适用于用英文写的联系人姓名或只有姓名(不是姓氏)的联系人姓名

例如:它适用于以下联系人:Express Service、George、Maria Mpakou、Σοφια、不区分语言

但是,当联系人是用我的语言(希腊语)编写的并且有空格(例如 Αιμιλιος Δημιος)时,它会返回带有超出范围的索引的下方光标。

当我第一次尝试 api 13 时,它就像一个魅力。顺便说一句,我的 Android.Manifest 有 utf-8 编码,如果这与它有关请任何建议都会有帮助。谢谢

4

1 回答 1

0

经过大量搜索后,我终于用不同的方式做到了……比如向所有联系人询问 Sql 查询

这是代码:

String empName=data.getStringExtra("name");
Cursor idCursor = getContentResolver().query(                 
ContactsContract.Contacts.CONTENT_URI,null,Contacts.DISPLAY_NAME+" = '"+empName+"'", null, null);

这就像一个魅力!

于 2012-07-04T07:15:00.677 回答