2014-04-08 3 views
0

Может кто-то разъяснит, как я могу позвонить по номеру телефона, вместо того, чтобы проверять, есть ли у телефона номер телефона ContactsContract.Contacts.HAS_PHONE_NUMBER. Я попробовал ContractsContract.CommonKinds.Phone.NUMBER, заменив номер телефона, но он продолжает сбой. В приведенном ниже коде есть номер телефона.Как получить номер телефона из ContactsContract Android?

открытый класс ContactListActivity extends ListActivity { закрытый курсор;

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    /* 

    ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view, cursor, from, to); 
    setListAdapter(adapter); 
    */ 
    setContentView(R.layout.settings); 

    Cursor cur = getContacts(); 

    ListView lv = (ListView)findViewById(android.R.id.list); 
    //String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID}; 
    // int[] to = new int[] {R.id.checkBox}; 

    String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER}; 

    SimpleCursorAdapter adapter = 
      new SimpleCursorAdapter(this, 
            R.layout.contact_list_item, 
            cur, 
            fields, 
            new int[] {R.id.cbContact, R.id.tvPhoneNo}); 
     lv.setAdapter(adapter);  

} 

private Cursor getContacts() { 
     // Run query  
     Uri uri = ContactsContract.Contacts.CONTENT_URI; 

     String[] projection = 
       new String[]{ ContactsContract.Contacts._ID, 
           ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER}; 
      String selection = null; 
      String[] selectionArgs = null; 
      String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + 
       " COLLATE LOCALIZED ASC"; 
      return managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
    } 

}

ответ

0

Я извлекаться номер телефона моего callLog используя этот код.

Cursor cursor = contentResolver.query(uri, null, selection, selectionArgs,"date DESC"); 

    if (cursor != null && cursor.getCount() > 0) 
       { 
       while (cursor.moveToNext()) 
        { 

    phNumber = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)); 

         callDuration = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION)); 
         dur = Integer.parseInt(callDuration); 

} 
       } 

       cursor.close(); 

надеюсь, что это вам поможет.

+0

Спасибо очень за помощь! : D Я только что осознал свою ошибку и разместил разрешенный код выше. – user37375

0

разрешаемые с помощью ContactsContract.CommonDataKinds.Phone.CONTENT_URI вместо ContactsContract, как в коде ниже:

общественного класс ContactListActivity простирается ListActivity { личного Cursor курсора;

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    /* 

    ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view, cursor, from, to); 
    setListAdapter(adapter); 
    */ 
    setContentView(R.layout.settings); 

    Cursor cur = getContacts(); 

    ListView lv = (ListView)findViewById(android.R.id.list); 
    //String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID}; 
    // int[] to = new int[] {R.id.checkBox}; 

    String[] fields = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; 

    SimpleCursorAdapter adapter = 
      new SimpleCursorAdapter(this, 
            R.layout.contact_list_item, 
            cur, 
            fields, 
            new int[] {R.id.cbContact, R.id.tvPhoneNo}); 
     lv.setAdapter(adapter);  

} 

private Cursor getContacts() { 
     // Run query  
     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 

     String[] projection = 
       new String[]{ ContactsContract.CommonDataKinds.Phone._ID, 
       ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; 
      String selection = null; 
      String[] selectionArgs = null; 
      String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + 
       " COLLATE LOCALIZED ASC"; 
      return managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
    } 

}

Смежные вопросы