如何在Android中获取“Internet呼叫”信息

时间:2011-01-26 08:36:44

标签: android

我正在开发android应用程序,我在其中备份所有联系信息然后恢复,我检索所有联系信息, 例如:

显示名称

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null,null, null, null)
String  name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));

电话号码

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);   

与之相似 但我无法获得“互联网通话”的价值。 请有人告诉我哪个班级我会获得有关互联网电话信息的信息。

2 个答案:

答案 0 :(得分:1)

不知道这是不是最好的方式,但它有效,我对android来说还是新手。

Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] {
    ContactsContract.Data._ID,
    ContactsContract.Data.DISPLAY_NAME,
    ContactsContract.CommonDataKinds.SipAddress.SIP_ADDRESS,
    ContactsContract.CommonDataKinds.SipAddress.TYPE,
};
String selection = 
    ContactsContract.Data.MIMETYPE+" ='" 
    +ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE+"'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME+ " COLLATE LOCALIZED ASC";
Cursor cursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder);

似乎电话号码存储在misc信息数据中,您搜索了mime类型。

HTH

答案 1 :(得分:0)

我已经测试过了。我能够获得互联网电话价值。尝试以下代码。

Uri uri = ContactsContract.Contacts.CONTENT_URI;
ContentResolver cr = getContentResolver();
Cursor cur=cr.query(uri, null, null, null, sortOrder);
        if(cur.getCount()>0){
        while(cur.moveToNext()){
  if(Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))> 0) {
String internetWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
                    String[] internetWhereParams = new String[]{id,ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE}; 
                    Cursor internetCur = cr.query(ContactsContract.Data.CONTENT_URI, null, internetWhere, internetWhereParams, null); 
                    if (internetCur.moveToFirst()) { 
                    String internetCall = internetCur.getString(internetCur.getColumnIndex(ContactsContract.CommonDataKinds.SipAddress.SIP_ADDRESS));
        Log.e(TAG, "internet Call: " + internetCall);
                    } internetCur.close();

}              
            }
        } cur.close();