簡體   English   中英

通過ID獲取聯系電話-空的光標

[英]Get contact phone number by ID - empty Cursor

因此,我無法使用其ID獲取聯系人的電話號碼。

這是我用來檢索數字的代碼:

public String getNumber(){
        //gets numbers by id
        if (hasPhoneNumber){

            ContentResolver contentResolver=context.getContentResolver();
            Cursor cursor=contentResolver.query(
                    ContactsContract.Contacts.CONTENT_URI,
                    null,
                    ContactsContract.Contacts._ID+" = "+id,
                    null,
                    null
            ); //TODO : resolve empty cursor error
            //contact seems to have no data available?

            if (cursor.moveToFirst()){

                cursor.moveToNext();

                String contactId=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

                Cursor phones=contentResolver.query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID+" = "+contactId,
                        null,
                        null);

                if (phones.moveToFirst()){
                    while (phones.moveToNext()) {
                        this.number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    }
                }

                phones.close();
            } else {
                test("cursor error...");
            }

            cursor.close();

            return number;
        } else {
            return null;
        }
    }

它適用於一些聯系人,但大多數顯示“ cursor error ...”吐司(test(“ cursor error ...”))

總是

光標游標

有錯誤。

我的猜測是空的,但我知道我已經保存了那些聯系人的電話號碼。 我該如何解決? 我還有其他要求嗎?

提前致謝!

編輯:

這是我檢索ID和名稱的方法:

contactCursor=getActivity().getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                new String[]{
                        ContactsContract.Contacts._ID,//0 - Long
                        ContactsContract.Contacts.DISPLAY_NAME_PRIMARY,//1 - String
                        ContactsContract.Contacts.HAS_PHONE_NUMBER,//2 - Integer
                },
                null,
                null,
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");

編輯2:

我在github存儲庫中擁有所有內容: https : //github.com/nicolas-d-torres/Syncc

代碼的第一塊位於app / src / main / java / gtsarandum / syncc / SynccContact內部

第二個在app / src / main / java / gtsarandum / syncc / ContactFragment中

我知道這個答案有點晚了,但希望它將對類似的問題有所幫助。 您的兩個游標查詢都使用id作為字符串

ContactsContract.Contacts._ID+" = "+id,

ContactsContract.CommonDataKinds.Phone.CONTACT_ID+" = "+contactId,

應該

ContactsContract.Contacts._ID + " = " + Uri.encode(id),

ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ Uri.encode(contactId),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM