【问题标题】:Android: get call history of contactAndroid:获取联系人的通话记录
【发布时间】:2011-06-22 21:06:18
【问题描述】:

我正在使用此代码获取联系人的联系信息(我也在使用它 - 进行了一些修改 - 给联系人打电话、发送短信或发送电子邮件)。不知道有没有办法显示某个联系人的通话记录:

字符串 name3 是联系人姓名。

     contactinfobtn.setOnClickListener(new View.OnClickListener() 
     {
        public void onClick(View v) 
        { 
            ContentResolver cr = getContentResolver();
            Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

            if (cur.getCount() > 0) 
            {

                while (cur.moveToNext()) {
                id_contact = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                name_contact = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                    if (name_contact.equals(name3))
                    {
                    Cursor pCur = cr.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id_contact}, null);
                       id_contact2 = id_contact;

                        while (pCur.moveToNext()){
                        } 
                    pCur.close();
                    }
                }
                Intent intent_contacts = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people/" + id_contact2));
                startActivity(intent_contacts);
            }
        }
     });

【问题讨论】:

    标签: android calllog


    【解决方案1】:

    有一个名为CallLog.Calls 的类包含CONTENT_URI 用于查询通话记录。

    以下是在通话记录中列出电话号码的示例:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
    
        String[] projection = new String[] {
            CallLog.Calls._ID, CallLog.Calls.NUMBER};
        Cursor query = this.managedQuery(
            CallLog.Calls.CONTENT_URI, projection, null, null, null);
    
        ListAdapter adapter = new SimpleCursorAdapter(
            this, android.R.layout.simple_list_item_1, query,
            new String[] {CallLog.Calls.NUMBER},
            new int[] {android.R.id.text1});
        this.setListAdapter(adapter);
    }
    

    【讨论】:

    • 谢谢。我还没有尝试过,但这会跳转到某个联系人的通话记录吗? '因为这就是我想要的。顺便说一句,它说“CallLog 无法解析为变量”。我使用的是 Android 2.1
    • 我想通了:)。遍历所有联系人,关键行是 final String selection = android.provider.CallLog.Calls.NUMBER + "=" + "'" + contactnumbers.get(i) + "'";
    • 克里斯蒂安,你能帮我做类似的事情吗?我在获取双 sim android 设备的通话记录时遇到问题。这是 SO 链接.. stackoverflow.com/questions/23115782/…
    • @Scorpion 不幸的是,我没有也没有使用过双卡安卓设备。我不知道如何让它发挥作用。
    猜你喜欢
    • 2011-09-30
    • 2012-02-05
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多