android,我试着找到什么类型的号码(来自联系人)(移动,家庭,工作)

Ton*_*ony 3 android

String tmp = txtPhoneName.getText().toString();
ContentResolver cr = getContentResolver(); 
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,  "DISPLAY_NAME = '" + tmp + "'", null, null);

if (cursor.moveToFirst()) {     
    String contactId = Cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
    Cursor phones = cr.query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + " = " + contactId, null, null); 

    while (phones.moveToNext()) {   
        String number = phones.getString(phones.getColumnIndex(Phone.NUMBER));
        number1 = number;
        int type = phones.getInt(phones.getColumnIndex(Phone.TYPE));  

        switch (type) {    
            case Phone.TYPE_HOME: 
            // do something with the Home number here...  
                break;          
            case Phone.TYPE_MOBILE:    
                // do something with the Mobile number here...   
                break;            
            case Phone.TYPE_WORK:   
                // do something with the Work number here... 
                break;           
        }   
    }    
    phones.close();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当它处于开关状态时,它不会检查任何内容.它去了while(phones.moveToNext())我的错误在哪里Phone.TYPE_HOME不是int而我的类型无法与它相比......最后一个问题,为什么对于某些联系人它获取手机号码和对于其他家庭(在两种情况下,联系人都有家庭和手机号码)?我想得到一个以07开头的数字,如果没有那种数字可以得到联系人的任何数字,然后如何拨打该号码...... THX

Pir*_*hah 9

在这里,我将告诉你如何回家,移动和工作电话没有任何联系,首先你得到任何contact_id的uri,然后使用下面的方法来获得所有的电话类型.

while (phone_crsr.moveToNext()) 
{ 
 int phone_type = phone_crsr.getInt(phone_crsr.getColumnIndex(Phone.TYPE));  
  switch (phone_type) 
     {    
      case Phone.TYPE_HOME: 
       phone_home =phone_crsr.getString(phone_crsr.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
       Toast.makeText(this, "home"+phone_home, Toast.LENGTH_LONG).show();
       break;          
      case Phone.TYPE_MOBILE:     
       phone_mob=phone_crsr.getString(phone_crsr.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
       Toast.makeText(this, "mob"+phone_mob, Toast.LENGTH_LONG).show();  
       break;            
      case Phone.TYPE_WORK:                                  
       phone_work=phone_crsr.getString(phone_crsr.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
       Toast.makeText(this, "work"+phone_work, Toast.LENGTH_LONG).show();
       break;           
     }
 }
Run Code Online (Sandbox Code Playgroud)


den*_*nza 0

这可能是因为你还没有在箱子里放任何东西,尝试使用 int i=0; 并在调试器中看到