【问题标题】:Cannot get the uri based on a contact's name无法根据联系人姓名获取 uri
【发布时间】:2012-07-03 11:47:43
【问题描述】:

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

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

例如: 它适用于以下联系人: 快递服务, 乔治, 玛丽亚·姆帕库 Σοφια, 不分语言

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

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

【问题讨论】:

    标签: android character uri spaces


    【解决方案1】:

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

    代码如下:

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

    这就像一个魅力!

    【讨论】:

      猜你喜欢
      • 2015-10-12
      • 1970-01-01
      • 2016-05-07
      • 2012-10-11
      • 2014-06-21
      • 2013-01-20
      • 2012-08-27
      • 2017-03-28
      相关资源
      最近更新 更多