получить телефонные номера с телефона Android - PullRequest
0 голосов
/ 11 июня 2010

Прежде всего, извините за мой английский ...

У меня проблема с получением телефонных номеров от контактов.

Это мой код

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;


public class TestContacts extends ListActivity {


private ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();

 private SimpleAdapter numbers;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {   
super.onCreate(savedInstanceState);
  setContentView(R.layout.contacts);
  numbers = new SimpleAdapter( 
    this, 
list,
R.layout.main_item_two_line_row,
new String[] { "line1","line2" },
new int[] { R.id.text1, R.id.text2 }  );
  setListAdapter( numbers );



  Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
    null, null, null, null); 
  while (cursor.moveToNext()) { 
   String contactId = cursor.getString(cursor.getColumnIndex( 
     ContactsContract.Contacts._ID)); 
   String hasPhone = cursor.getString(cursor.getColumnIndex( 
     ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

                    //check if the contact has a phone number
   if (Boolean.parseBoolean(hasPhone)) { 

Cursor phones = getContentResolver().query( 
  ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
  null, 
  ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, 
  null, null); 
while (phones.moveToNext()) { 
 // Get the phone number!?

 String contactName = phones.getString( 
   phones.getColumnIndex( 
     ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 

 String phoneNumber = phones.getString( 
   phones.getColumnIndex( 
     ContactsContract.CommonDataKinds.Phone.NUMBER)); 
 Toast.makeText(this, phoneNumber, Toast.LENGTH_LONG).show();     

 drawContact(contactName, phoneNumber);

} 
phones.close(); 
   } 
  }cursor.close();
 }

 private void drawContact(String name, String number){

  HashMap<String,String> item = new HashMap<String,String>();
  item.put( "line1",name);
  item.put( "line2",number);
  list.add( item );
  numbers.notifyDataSetChanged();

 }

}

Кажется, что ни у одного контакта нет телефонного номера (я добавил 2 контакта на эмуляторе и пробовал также на своем HTC Desire). Проблема в том, что if (Boolean.parseBoolean (hasPhone)) всегда возвращает false Как правильно узнать номера телефонов?

Я пытался вызвать drawContact (String name, String number) перед оператором if, не запрашивая номер телефона, и это сработало (оно рисует имя дважды). но в LinearLayout они не упорядочены по алфавиту ... как я могу упорядочить по алфавиту (аналогично исходному приложению контактов)?

спасибо за совет, Лука

1 Ответ

1 голос
/ 11 июня 2010

Проверьте документацию для parseBoolean ().Возможно, вы захотите попытаться разобрать результат в int вместо логического.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...