无法根据联系人的姓名获取uri

时间:2012-07-03 11:47:43

标签: android character uri spaces

我开始为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));`

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

例如: 它适用于以下联系人: 快递服务, 乔治, Maria Mpakou, Σοφια, 没有区别语言

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

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

1 个答案:

答案 0 :(得分:0)

经过大量搜索后,我终于用不同的方式做了...就像向所有联系人询问Sql查询一样

以下是代码:

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

这就像一个魅力!