从联系人列表中获取 Skype 名称
Get Skype name from Contacts list
我在 android 设备中使用此代码获取 Skype 联系人:
private void getContactList() {
Cursor c = getContentResolver().query(
RawContacts.CONTENT_URI,
new String[] { RawContacts.CONTACT_ID,
RawContacts.DISPLAY_NAME_PRIMARY,
RawContacts.DISPLAY_NAME_ALTERNATIVE },
RawContacts.ACCOUNT_TYPE + "= ?",
new String[] { "com.skype.contacts.sync" }, null);
int contactNameColumn = c
.getColumnIndex(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]);
}
}
此代码工作正常,但它 returns Skype 显示 names.However 是否有可能获得 Skype 名称 而不是显示名称,所以我可以使用 Skype 用户名 进行通话或视频通话?。
谢谢,
问候。
我对 Android-Skype API 不是很熟悉,但它看起来像这条线
.getColumnIndex(RawContacts.DISPLAY_NAME_ALTERNATIVE);
是什么拉显示名称而不是用户名。您可以检查 API 并查看是否有另一个 RawContacts. 方法 代替获取用户名。
可在此处获得更多信息:
http://www.programmableweb.com/api/skype
或
您需要查询 Data
table 而不是 RawContacts
,Data
table 的数据按 mimetype
组织s,你只需要找到包含你正在寻找的信息的mimetype
,在skype
的情况下是:"vnd.android.cursor.item/com.skype.android.skypecall.action"
private void getContactList() {
Cursor c = getContentResolver().query(
Data.CONTENT_URI,
new String[] { Data.CONTACT_ID, Data.DATA1 },
Data.MIMETYPE + "= ?",
new String[] { "vnd.android.cursor.item/com.skype.android.skypecall.action" },
null);
while (c != null && c.moveToNext()) {
String contact = c.getLong(0);
String skype = c.getString(1);
Log.i("contact " + contact + " has skype username: " + skype);
}
}
- 我在这里输入了代码,所以没有检查,我可能有错别字
- 确保您始终通过
c.close()
关闭游标
我在 android 设备中使用此代码获取 Skype 联系人:
private void getContactList() {
Cursor c = getContentResolver().query(
RawContacts.CONTENT_URI,
new String[] { RawContacts.CONTACT_ID,
RawContacts.DISPLAY_NAME_PRIMARY,
RawContacts.DISPLAY_NAME_ALTERNATIVE },
RawContacts.ACCOUNT_TYPE + "= ?",
new String[] { "com.skype.contacts.sync" }, null);
int contactNameColumn = c
.getColumnIndex(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]);
}
}
此代码工作正常,但它 returns Skype 显示 names.However 是否有可能获得 Skype 名称 而不是显示名称,所以我可以使用 Skype 用户名 进行通话或视频通话?。 谢谢, 问候。
我对 Android-Skype API 不是很熟悉,但它看起来像这条线
.getColumnIndex(RawContacts.DISPLAY_NAME_ALTERNATIVE);
是什么拉显示名称而不是用户名。您可以检查 API 并查看是否有另一个 RawContacts. 方法 代替获取用户名。
可在此处获得更多信息:
http://www.programmableweb.com/api/skype
或
您需要查询 Data
table 而不是 RawContacts
,Data
table 的数据按 mimetype
组织s,你只需要找到包含你正在寻找的信息的mimetype
,在skype
的情况下是:"vnd.android.cursor.item/com.skype.android.skypecall.action"
private void getContactList() {
Cursor c = getContentResolver().query(
Data.CONTENT_URI,
new String[] { Data.CONTACT_ID, Data.DATA1 },
Data.MIMETYPE + "= ?",
new String[] { "vnd.android.cursor.item/com.skype.android.skypecall.action" },
null);
while (c != null && c.moveToNext()) {
String contact = c.getLong(0);
String skype = c.getString(1);
Log.i("contact " + contact + " has skype username: " + skype);
}
}
- 我在这里输入了代码,所以没有检查,我可能有错别字
- 确保您始终通过
c.close()
关闭游标