【问题标题】:how to get the contact infomation by sms message如何通过短信获取联系方式
【发布时间】:2010-12-17 02:40:58
【问题描述】:

我正在开发一个扩展 SMS 应用程序。现在我可以读取来自 mmssms.db 的所有 SMS 消息。在 SMS 数据库表中,字段“person”表示联系人表中的“_id”。当 'person' >= 1 时,这意味着消息是从联系人列表中的人发送的。所以我可以从联系人表中“管理查询”。但问题是,在我的手机中,测试程序有时无法查询联系人信息,即使“人”> = 1。那么有人可以告诉我一些正确的方法来查询短信表中“人”的联系信息吗? 这是一些示例代码,可以使我的问题更清楚:

class ContactItem {  
    public String mName;  
}  

    ContactItem getContact(Activity activity, final SMSItem sms) {  
        if(sms.mPerson == 0) return null;  
        Cursor cur = activity.managedQuery(ContactsContract.Contacts.CONTENT_URI,   
                new String[] {PhoneLookup.DISPLAY_NAME},   
                " _id=?",   
               new String[] {String.valueOf(sms.mPerson)}, null);  
       if(cur != null &&  
           cur.moveToFirst()) {  
           int idx = cur.getColumnIndex(PhoneLookup.DISPLAY_NAME);  
           ContactItem item = new ContactItem();  
           item.mName = cur.getString(idx);  
           return item;  
       }  
       return null;  
   }  

【问题讨论】:

    标签: android


    【解决方案1】:

    好的,由于没有人帮助我,我尝试阅读一些开源项目代码,现在我得到了答案。正如我一开始所设想的,从 SMS 消息中查询联系信息的最佳方法是按 NUMBER(也称为 ADDRESS)查询:

       ContactItem getContactByAddr(Context context, final SMSItem sms) {  
        Uri personUri = Uri.withAppendedPath(  
                ContactsContract.PhoneLookup.CONTENT_FILTER_URI, sms.mAddress);  
        Cursor cur = context.getContentResolver().query(personUri,  
                new String[] { PhoneLookup.DISPLAY_NAME },  
                null, null, null );  
        if( cur.moveToFirst() ) {  
            int nameIdx = cur.getColumnIndex(PhoneLookup.DISPLAY_NAME);  
            ContactItem item = new ContactItem();  
            item.mName = cur.getString(nameIdx);  
           cur.close();  
           return item;  
       }  
       return null;  
    

    }

    【讨论】:

    • 感谢您发布您的解决方案。我很感激!你知道...我试图从上周在网上找到的大约 30 个样本中学习,但没有一个真正有效。你的一个完美无缺。我需要找到一种方法对其进行一点优化,因为在获取所有消息和联系人时屏幕会出现几秒钟的空白 - 但至少现在它会获取所有联系人:)
    猜你喜欢
    • 2013-06-16
    • 2012-09-09
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多