Pegando todos os números telefonicos dos contatos

Alguem sabe de uma apostila boa sobre o assunto ou poderia me dar uma dica como fazer? Procurei pelo google mas não tive sorte em encontrar uma boa, talves pela maneira como faço a pesquisa, sei lá.

Obrigado desde já

SELECT * FROM CONTATO
INNER JOIN TELEFONE ON CONTATO.ID_CONTATO = TELEFONE.ID_CONTATO?

Tem a apostila da Caelum FJ-21 que aborda a parte de persistência usando DAO.

Eu consigo pegar todos os nomes do contato usando o getContentResolver.query(), mas com o numero não consigo. Quando chegar em casa irei postar o codigo que fez e que por algum motivo esta dando erro.

Bom eu usei o trecho abaixo para ler todos os numeros telefonicos, mas por algum motivo retorna sempre zero

	private List<String> obterNumero(Context context, long id2) {
		// TODO Auto-generated method stub
		List<String> numero=new ArrayList<String>();
		Cursor cursor=
				context.getContentResolver().query(
						ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
						ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="+id2,null,null);		
		try {
			while(cursor.moveToNext()){
				int coluna=cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
				String fone=cursor.getString(coluna);
				numero.add(fone);				
			}
		} finally {
			cursor.close();
		}
		return numero;
	}

Duvidas, não sei qual é do id2 ali, se eu tenho que informar algum numero ou se ele serve para outra coisa.

Obrigado.