2011-01-14 46 views
12

Tôi có thể chèn chương trình vào nhật ký cuộc gọi Android bằng một số, ngày tháng, thời lượng & loại NHƯNG Tôi không thể tìm ra cách cũng bao gồm ảnh, nhãn và tên? Mục nhập tôi đang thêm là dành cho một Số liên lạc hiện tại có cùng số chính xác. Tôi đã nhận thấy trên một thiết bị Motorola tên & pic xuất hiện nếu số phù hợp với một Liên hệ hiện có nhưng trên HTC của tôi Incredible cái gì đó là mất tích?Làm thế nào để lập trình chèn mục nhật ký cuộc gọi VỚI tên hiển thị và ảnh?

tôi làm như sau .. (không biết những gì để mặc thử cho bức ảnh)

ContentValues values = new ContentValues(); 
values.put(CallLog.Calls.NUMBER, number); 
values.put(CallLog.Calls.CACHED_NAME, name); 
values.put(CallLog.Calls.CACHED_NUMBER_LABEL, label); 
values.put(CallLog.Calls.DATE, date); 
values.put(CallLog.Calls.DURATION, duration); 
values.put(CallLog.Calls.TYPE, myCallType); 
context.getContentResolver().insert(CallLog.Calls.CONTENT_URI, values); 
+1

Trên HTC, bạn đã thử chỉ cung cấp loại số ngày-thời gian mà không có giá trị được lưu trong bộ nhớ cache? – Kobor42

+0

Một câu hỏi tương tự đã được hỏi ở đây không có câu trả lời: http://stackoverflow.com/questions/21577391/android-updating-a-call-log-entry-in-htc-custom-dialers-call-log-not -working –

Trả lời

2

Bạn không thể chèn hình ảnh vào cuộc gọi riêng của mình đăng nhập; chúng được lưu trong Liên hệ được liên kết với mục nhật ký cuộc gọi. Xem ContactsContract.Data để biết thêm thông tin về cách thực hiện điều đó.

Theo như thiết bị HTC không cập nhật nhật ký cuộc gọi với ảnh hiện có, nó có thể được gắn với cách HTC Sense lưu trữ các mục nhật ký cuộc gọi; Tôi đã thấy các sự cố tương tự chỉ xuất hiện trên các thiết bị Sense.

Mục nhật ký cuộc gọi thường được lưu trữ trong bảng calls trong cơ sở dữ liệu ứng dụng Danh bạ (/data/data/com.android.providers.contacts/databases/contacts2.db). Đối với một số lý do, có vẻ như HTC Sense không cập nhật các mục nhật ký cuộc gọi hiện có nếu thay đổi dữ liệu liên lạc, nhưng các ROM khác thực hiện. Ví dụ, nếu tôi sử dụng HTC EVO LTE với chứng khoán Sense 5.0 để thực hiện cuộc gọi đến người mà tôi đã lưu dưới dạng "Jenny Smith", một mục được tạo trong bảng calls, bao gồm trường name - nơi nó lưu trữ Jenny Smith. Nếu tôi cập nhật thông tin liên lạc của mình thành "Jenny Jones" và thực hiện cuộc gọi mới cho cô ấy, mục nhập mới được lưu trữ trong bảng calls có tên Jenny Jones, nhưng mục nhập trước đó không thay đổi. Màn hình Lịch sử cuộc gọi thực tế hiển thị tất cả các cuộc gọi là Jenny Jones, nhưng bản thân cơ sở dữ liệu có tên cũ.

Các thiết bị khác tôi đã kiểm tra (bao gồm Nexus 5) cập nhật các mục nhập trước đó trong bảng calls khi Nhật ký cuộc gọi được xem. Thiết bị Motorola của bạn có khả năng hoạt động giống như Nexus 5, làm mới dữ liệu khi cần.

Tôi không phải là trình hướng dẫn cơ sở dữ liệu, nhưng có một số lượng quen thuộc hợp lý với chúng. Từ quan điểm cấu trúc cơ sở dữ liệu, có vẻ như bất kỳ thông tin liên hệ cụ thể nào được lưu trữ trong bảng calls (nó chứa trường raw_contacts_id được liên kết với cùng một trường trong bảng contacts của cơ sở dữ liệu đó. được lưu trữ), nhưng đó là cách nó được thực hiện.

1

Cách hợp lý duy nhất để thực hiện nó (có hiệu quả với tôi) là thêm số liên lạc trực tiếp vào điện thoại và sau đó thêm nhật ký cuộc gọi của bạn trỏ vào số liên lạc đó, sau đó bạn có thể xóa số liên lạc khỏi điện thoại. Vấn đề duy nhất với điều này là nếu ứng dụng của bạn bị giết trước khi xóa liên hệ, do đó bạn sẽ phải triển khai một số loại dọn dẹp khi khởi chạy ứng dụng tiếp theo. Đó là tất cả rất lộn xộn cho những gì nên là một nhiệm vụ đơn giản.

+0

Theo kinh nghiệm của tôi, nếu bạn xóa liên hệ, mọi ảnh được liên kết cũng sẽ biến mất khỏi nhật ký cuộc gọi. Nhật ký cuộc gọi không lưu trữ ảnh, số liên lạc sẽ thực hiện. – mike47

Các vấn đề liên quan