2011-07-30 20 views
7

Novato al uso del proveedor de contenido de contrato de contactos.Cómo obtener información de Skype de la lista de contactos de Android

Estoy tratando de hacer una llamada de skype desde mi aplicación, y no puedo encontrar la forma de obtener la información de Skype de los contactos de Android. Estoy ejecutando una consulta a través de ContentResolver para obtener todos los datos de los contactos, pero no sé cómo encontrar el nombre de skype dentro de los datos.

+0

¿Qué tal algunos consejos sobre qué uri usar para buscar esta información? – sanddune

Respuesta

3

Esto es trabajo para mí:

public String getSkypeID(Context mContext, String contactID) { 
    Log.i("getContactNumber"); 

    String returnID = "noMatch"; 

    ContentResolver cr = mContext.getContentResolver(); 
    Cursor skype = cr.query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID 
      + " = " + contactID, null, null); 

    while (skype.moveToNext()) { 

     int type = skype 
       .getInt(skype 
         .getColumnIndex(ContactsContract.CommonDataKinds.Im.PROTOCOL)); 
     String imName = skype.getString(skype 
       .getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); 

     switch (type) { 
     case ContactsContract.CommonDataKinds.Im.PROTOCOL_SKYPE: 
      Log.d("contactID: " + contactID + " type: " + type 
        + " imName: " + imName); 

      returnID = imName; 

      break; 

     default: 
      Log.v("Other numbers: " + imName); 
      break; 
     } 

    } 

    return returnID; 
} 

Pass en el ContactId para el uso:

String skypeID = getSkypeID(mContext, contactID); 

    if(!skypeID.matches("noMatch") { 
    //skypeID found 

    // Skype intent here 

    } 

Espero que ayude.

+1

hola quiero obtener contacto de mi cuenta de Skype en la aplicación de Android. por favor ayúdame. – dipali

+0

@dipali También quiero buscar la lista de contactos de Skype ... ¿es posible o no ... –

+0

@dipali ¿tiene la respuesta que la lista de contactos de Skype en Android es posible o no? También estoy buscando lo mismo. –

0

si lo que desea es lista de nombres de contactos de Skype y nombre de usuario ir a buscar entonces esto puede ayudar a

private void getSkypeContactList() { 
    Cursor c = getContentResolver().query 
(ContactsContract.RawContacts.CONTENT_URI, 
new String[] { ContactsContract.RawContacts.CONTACT_ID,ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY,ContactsContract.RawContacts.DISPLAY_NAME_ALTERNATIVE }, 
       ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?", 
       new String[] { "com.skype.contacts.sync" }, null); 

     int contactNameColumn = c 
       .getColumnIndex(ContactsContract.RawContacts.DISPLAY_NAME_ALTERNATIVE); 
     int count = c.getCount(); 
     skypeName = new String[count]; 
     for (int i = 0; i < count; i++) { 
      c.moveToPosition(i); 
      skypeName[i] = c.getString(contactNameColumn); 

      Log.i("KEY", skypeName[i]); 
     } 
    } 
0

favor refiérase el código de abajo. (Trabajando desde mi aplicación)

public String getSkypeUsername(Context context, String name) { 
    Cursor c = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Contacts.Data.MIMETYPE + "=?", 
      new String[] { "vnd.android.cursor.item/com.skype.android.skypecall.action" }, null); 

    while (c != null && c.moveToNext()) { 
     String primary = c.getString(c.getColumnIndex(ContactsContract.Data.DISPLAY_NAME_PRIMARY)); 
     String alternate = c.getString(c.getColumnIndex(ContactsContract.Data.DISPLAY_NAME_ALTERNATIVE)); 
     if(primary.equalsIgnoreCase(name) || alternate.equalsIgnoreCase(name)) { 
      String username = c.getString(c.getColumnIndex(ContactsContract.Data.DATA1)); 
      c.close(); 
      return username; 
     } 
    } 
    c.close(); 
    return null; 
} 

Todo lo que tiene que hacer es llamar cadena usuario = getSkypeUsername (contexto, "name_of_person_to_call"). Con este nombre de usuario llamada makeSkypeCall (contexto, nombre de usuario)

public void makeSkypeCall(Context context, String username) { 
     Intent sky = new Intent("android.intent.action.VIEW"); 
     sky.setData(Uri.parse("skype:" + username + "?call")); 
     context.startActivity(sky); 
} 

Quiero saber si esto ayuda!

Cuestiones relacionadas