2013-12-16 46 views
0

我正在從手機數據庫獲取數據。但總是光標變得null。我也有權限讀取聯繫人。有誰能夠幫助我?聯繫人光標始終爲空?

//for get number and name from contacts 
c = getContentResolver().query(uri, new String[]{ 
            ContactsContract.CommonDataKinds.Phone.NUMBER, 
            ContactsContract.CommonDataKinds.Phone.TYPE }, 
           null, null, null); 

我所有的代碼是在這裏:

@Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (data != null) { 
       Uri uri = data.getData(); 

       if (uri != null) { 
        Cursor c = null; 
        try { 
         c = getContentResolver().query(uri, new String[]{ 
            ContactsContract.CommonDataKinds.Phone.NUMBER, 
            ContactsContract.CommonDataKinds.Phone.TYPE }, 
           null, null, null); 

         if (c != null && c.moveToFirst()) { 
          String number = c.getString(0); 
          int type = c.getInt(1); 
          Toast.makeText(this, type + ": " + number, Toast.LENGTH_LONG).show(); 
         } 
        } finally { 
         if (c != null) { 
          c.close(); 
         } 
        } 
       } 
從logcat的

而且Exception

12-16 12:59:33.962: E/AndroidRuntime(20650): Caused by: java.lang.IllegalArgumentException: Invalid column data1 
12-16 12:59:33.962: E/AndroidRuntime(20650): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167) 
+0

是什麼'uri'?你可以發佈價值嗎? –

+0

Uri:content://com.android.contacts/contacts/lookup/2888i19d0e52809747dc1/374 – DuyguK

回答

1

我得到phoneNumber與下面的代碼,使用:

Cursor contact = getContentResolver().query(
        ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    if (contact.getCount() > 0) { 
    contact.moveToFirst(); 

    do 
    { 
       String contactId = contact.getString(contact 
        .getColumnIndex(ContactsContract.Contacts._ID)); 

     log.d("contactId is", contactId); 

        Cursor pCur = getContentResolver() 
          .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
            null, 
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
              + " = ?", 
            new String[] { contactId }, null); 
       if (pCur.getCount() > 0){ 
        pCur.moveToFirst(); 
        do { 
         String number = pCur 
           .getString(pCur 
             .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
          log.d("number is",number); 

        } while (pCur.moveToNext()); 
    } 
      } 
    while(contact.moveToNext()); 
    } 
+0

contactId是什麼?我會刪除我的遊標代碼嗎? – DuyguK

+0

首先測試這個,如果爲你工作,那麼是的,刪除你的光標,看我的Edt –

+0

沒有你的光標是一樣的。它不工作 – DuyguK