2011-06-15 14 views
6

Recibo un número de teléfono, los correos de contactos sin actividad de extensión y oncreate.¿Cómo obtener el correo electrónico de los contactos y números de teléfono de los contactos y la clase no tiene t extiende la actividad y el método oncreate()?

Al utilizar el código de barbecho:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 
      Class A extends Activity{ 

    new ClassB(this); 
} 

//////////////////////////////////////////////////// 
public static void getContactNumbers(Context context) { 
    String contactNumber = null; 
    int contactNumberType = Phone.TYPE_MOBILE; 
    String nameOfContact = null; 

     ContentResolver cr = context.getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
       null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       String id = cur.getString(cur 
         .getColumnIndex(BaseColumns._ID)); 
       nameOfContact = cur 
         .getString(cur 
           .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       if (Integer 
         .parseInt(cur.getString(cur 
           .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
        Cursor phones = cr 
          .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
            null, 
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
              + " = ?", new String[] { id }, 
            null); 

        while (phones.moveToNext()) { 
         contactNumber = phones.getString(phones 
           .getColumnIndex(Phone.NUMBER)); 
         contactNumberType = phones.getInt(phones 
           .getColumnIndex(Phone.TYPE)); 
         Log.i(TAG, "...Contact Name ...." + nameOfContact 
           + "...contact Number..." + contactNumber); 
         ApplicationConstants.phoneContacts 
           .add(new ContactNumberBean(nameOfContact, 
             contactNumber, contactNumberType)); 
        } 
        phones.close(); 
       } 

      } 
     }// end of contact name cursor 
     cur.close(); 

} 

/** 
* 
* This method is responsible to get native contacts and corresponding email 
* id (ApplicationConstants.emailContacts) 
* 
* @param context 
*/ 
public static void getContactEmails(Context context) { 
    String emailIdOfContact = null; 
    int emailType = Email.TYPE_WORK; 
    String contactName = null; 


     ContentResolver cr = context.getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
       null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       String id = cur.getString(cur 
         .getColumnIndex(BaseColumns._ID)); 
       contactName = cur 
         .getString(cur 
           .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       // Log.i(TAG,"....contact name....." + 
       // contactName); 

       cr.query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
           + " = ?", new String[] { id }, null); 

       Cursor emails = cr.query(Email.CONTENT_URI, null, 
         Email.CONTACT_ID + " = " + id, null, null); 
       while (emails.moveToNext()) { 
        emailIdOfContact = emails.getString(emails 
          .getColumnIndex(Email.DATA)); 
        // Log.i(TAG,"...COntact Name ...." 
        // + contactName + "...contact Number..." 
        // + emailIdOfContact); 
        emailType = emails.getInt(emails 
          .getColumnIndex(Phone.TYPE)); 
        ApplicationConstants.emailContacts 
          .add(new ContactEmailBean(contactName, 
            emailIdOfContact, emailType)); 

       } 
       emails.close(); 

      } 
     }// end of contact name cursor 
     cur.close(); 


} 

///////////////////////////////////////// 

Se está trabajando bien de conseguir resultados, pero no sé cómo implementar el código de barbecho en el ejemplo anterior:

ApplicationConstants.phoneContacts 
.add(new ContactNumberBean(nameOfContact, 
contactNumber, contactNumberType)); 

Si cualquiera uno sabe esto por favor ayúdenme.

Respuesta

3

Solo necesita acceder a un objeto android.content.Context para acceder al ContentResolver y consultar así ContentProviders. La actividad extiende el contexto, por lo que funciona. android.app.Service también extiende la actividad, por lo que también funciona. android.app.Application también extiende el contexto, por lo que también funcionará.

Cuestiones relacionadas