2011-07-30 23 views
7

संपर्क अनुबंध सामग्री प्रदाता का उपयोग करने के लिए नौसिखिया से स्काइप जानकारी कैसे प्राप्त करें।एंड्रॉइड संपर्क सूची

मैं अपने आवेदन के भीतर से एक स्काइप कॉल करने की कोशिश कर रहा हूं, और मैं यह नहीं समझ सकता कि एंड्रॉइड संपर्कों से स्काइप जानकारी कैसे प्राप्त करें। मैं संपर्क के लिए सभी डेटा प्राप्त करने के लिए ContentResolver के माध्यम से एक क्वेरी चला रहा हूं, लेकिन मुझे नहीं पता कि डेटा के भीतर स्काइप नाम कैसे ढूंढें। उपयोग के लिए contactID में

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

पास::

+0

इस जानकारी को देखने के लिए यूरी का उपयोग करने के लिए कुछ सलाह के बारे में कैसे? – sanddune

उत्तर

3

यह मेरे लिए काम कर रहा है

String skypeID = getSkypeID(mContext, contactID); 

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

    // Skype intent here 

    } 

आशा है कि मदद करता है।

+1

हैलो मैं एंड्रॉइड ऐप में अपने स्काइप खाते से संपर्क प्राप्त करना चाहता हूं। कृपया मेरी मदद करें। – dipali

+0

@ दीपाली मैं स्काइप संपर्क सूची भी लेना चाहता हूं ... क्या यह संभव है या नहीं .. –

+0

@ दीपाली क्या आपको जवाब मिला है कि एंड्रॉइड में स्काइप संपर्क सूची लाने संभव है या नहीं? मैं भी वही ढूंढ रहा हूं। –

0

अगर आप सिर्फ लाने स्काइप संपर्क नाम और उपयोगकर्ता नाम की सूची करना चाहते हैं तो यह मदद मिल सकती है

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

नीचे कोड देखें। (मेरे ऐप से काम कर)

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

आपको बस इतना करना है कॉल स्ट्रिंग उपयोगकर्ता नाम = getSkypeUsername है (संदर्भ, "name_of_person_to_call")। इस उपयोगकर्ता नाम कॉल makeSkypeCall (संदर्भ, उपयोगकर्ता नाम) के साथ

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

मुझे पता है कि अगर यह मदद करता है करते हैं!

संबंधित मुद्दे