2011-07-30 16 views
7

連絡先契約コンテンツプロバイダを使用する初心者に。アンドロイドの連絡先リストからSkype情報を取得する方法

私は自分のアプリケーション内からスカイプコールをしようとしています。アンドロイドの連絡先からスカイプ情報を取得する方法を理解できません。 ContentResolverを介して問い合わせを実行して連絡先のすべてのデータを取得していますが、データ内でSkype名を見つける方法がわかりません。

+0

この情報を探すためにどのURIをどのように使用するのですか? – sanddune

答えて

3

これは私のために働いている: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; 
} 

パスの使用のために:

String skypeID = getSkypeID(mContext, contactID); 

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

    // Skype intent here 

    } 

お役に立てば幸いです。あなただけのSkypeの連絡先名とユーザー名の一覧を取得したい場合は

+1

こんにちは私はアンドロイドアプリで自分のSkypeアカウントから連絡を取りたいと思っています。 私を助けてください。 – dipali

+0

@dipaliまた、Skypeの連絡先リストを取得したいと思っています...それは可能かどうかです。 –

+0

@dipaliあなたはアンドロイドでSkypeの連絡先リストを取得する答えがありますか?私も同じことを探しています。 –

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

このことができますなら、私を知ってみましょう!

関連する問題