【问题标题】:Accessing contact data Android访问联系人数据 Android
【发布时间】:2013-05-16 05:45:08
【问题描述】:

如果我要为联系人的字段赋值,例如昵称;

.withValue(Nickname.NAME, "Mr. Incredible")

根据http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Nickname.html存储在DATA1列

然而,如果我使用 SipAddress.SIP_ADDRESS() 添加一个 SIP 地址,它的值也会分配给 DATA1 列。我如何区分这两者?我对如何访问联系人特定字段有点困惑,我在 Android 参考中找不到解释。

我是专门用的

SimpleCursorAdapter(getActivity(),
                        R.layout.contact_list, null, new String[] {
                        SipAddress.DISPLAY_NAME, SipAddress.SIP_ADDRESS, Nickname.NAME},
                        new int[] {
                        R.id.text1, R.id.text2, R.id.text3}, 0);

【问题讨论】:

    标签: android contacts


    【解决方案1】:

    请尝试,

    try {
        Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
                        new String[]{ContactsContract.Data.DISPLAY_NAME},
                        ContactsContract.CommonDataKinds.Nickname.DATA1 + "=" + text, null, null);
    
        cursor.moveToFirst();
        String Nickname = cursor.getString(0);
    }
    catch (Exception e) {
    }
    

    【讨论】:

    • 我遇到了这个问题:无法从 ContextWrapper 类型中对非静态方法 getContentResolver() 进行静态引用
    • 还有,什么是'text'变量
    • 您需要将 Context 传递给您的静态方法
    • ok 所以 cursor.getString(0) 只得到一个昵称值。它没有将其识别为列
    • 奥利,你能帮我解决这个问题吗?类似stackoverflow.com/questions/16636297/…
    【解决方案2】:

    是的,它使用字符串SIP_ADDRESS 保存在ContactsContract.DataColumns.DATA1 中。希望这对你有帮助ContactsContract.CommonDataKinds.SipAddress

    编码愉快!

    【讨论】:

    • 昵称和SIP地址都在DATA1中?如何分别访问它们?假设我只想要昵称。
    • ContactsContract.CommonDataKinds.SipAddress.MIMETYPE/ContactsContract.CommonDataKinds.Nickname.NAME ? :)
    • 他们仍然返回 'data1' :(
    • android:name="android.permission.READ_CONTACTS" 已设置?
    • 如果您检查DEV,常量值为“data1”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多