2011-07-30 22 views
7

Người mới sử dụng Nhà cung cấp nội dung hợp đồng Danh bạ.Cách tải thông tin skype từ danh sách liên lạc Android

Tôi đang cố thực hiện cuộc gọi skype từ trong ứng dụng của mình và tôi không thể tìm hiểu cách nhận thông tin skype từ danh bạ Android. Tôi đang chạy một truy vấn thông qua một ContentResolver để có được tất cả các dữ liệu cho các địa chỉ liên lạc, nhưng tôi không biết làm thế nào để tìm tên skype trong dữ liệu.

+0

Còn một số lời khuyên về cách sử dụng uri để tìm kiếm thông tin này? – sanddune

Trả lời

3

này đang làm việc cho tôi:

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; 
} 

đèo trong ContactId để sử dụng:

String skypeID = getSkypeID(mContext, contactID); 

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

    // Skype intent here 

    } 

Hy vọng rằng sẽ giúp.

+1

xin chào tôi muốn liên hệ với tài khoản skype của tôi trong ứng dụng android. hãy giúp tôi. – dipali

+0

@dipali Tôi cũng muốn lấy danh sách liên lạc Skype ... có thể hay không .. –

+0

@dipali bạn có câu trả lời mà tìm nạp danh sách liên lạc Skype trong Android là có thể hay không? Tôi cũng tìm kiếm như vậy. –

0

nếu bạn chỉ muốn lấy danh sách tên liên lạc skype và tên người dùng thì đây có thể giúp

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

Vui lòng tham khảo đoạn code dưới đây. (Làm việc kể từ ứng dụng của tôi)

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; 
} 

Tất cả bạn phải làm là gọi String username = getSkypeUsername (bối cảnh, "name_of_person_to_call"). Với điều này gọi tên makeSkypeCall (bối cảnh, tên người dùng)

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); 
} 

Hãy cho tôi biết nếu điều này giúp!

Các vấn đề liên quan