2010-04-29 31 views
5

tôi đang cố gắng để tạo ra một ứng dụng VoIP và tôi muốn biết nếu nó có thể làm như sau với nội dung cung cấp dịch vụ Call Logs -Làm cách nào để thêm (các) trường và bản ghi mới vào cơ sở dữ liệu nhật ký cuộc gọi (lịch sử cuộc gọi)?

  1. Tôi muốn thêm các bản ghi cước cuộc gọi mới cho các cuộc gọi VoIP cùng với nhật ký cuộc gọi cho cuộc gọi thông thường. Làm cách nào để thêm bản ghi mới vào nhà cung cấp nội dung Nhật ký cuộc gọi hiện tại?

  2. Tôi muốn thêm trường tùy chỉnh vào Nhật ký cuộc gọi như ID phiên và trường địa chỉ SIP (tên @ tên miền). Làm thế nào tôi có thể tùy chỉnh cơ sở dữ liệu nhật ký cuộc gọi?

Sẽ rất tuyệt nếu ai đó có thể cho tôi ví dụ.

Trả lời

5

Từ ứng dụng SDK chuẩn, bạn không thể trực tiếp mở rộng hoặc sửa đổi cơ sở dữ liệu hoặc nhà cung cấp nội dung CallLog. Đối với ứng dụng VOIP dựa trên SDK, bạn nên duy trì nhật ký cuộc gọi của riêng mình.

Nếu bạn đang viết chương trình cơ sở của riêng mình cho thiết bị của riêng mình, tôi chắc chắn có những cách bạn có thể sửa đổi cơ sở dữ liệu nhật ký cuộc gọi.

+0

Nếu những gì bạn nói là đúng, câu trả lời của bạn cho câu trả lời của Roberto dưới đây là gì? Có lý do gì không nên làm việc hoặc không nên sử dụng? –

+0

@Eric: Câu trả lời đó là để thêm cuộc gọi vào nhật ký. Tôi đang giải quyết viên đạn số 2; Roberto đã giải quyết viên đạn số 1. Lời xin lỗi của tôi cho bất kỳ sự nhầm lẫn nào. – CommonsWare

8

Về câu hỏi đầu tiên, bạn có thể sử dụng mã này để thêm kỷ lục mới với nhà cung cấp nội dung các bản ghi cuộc gọi hiện tại:

public static void insertPlaceholderCall(ContentResolver contentResolver, String number){ 
    ContentValues values = new ContentValues(); 
    values.put(CallLog.Calls.NUMBER, number); 
    values.put(CallLog.Calls.DATE, System.currentTimeMillis()); 
    values.put(CallLog.Calls.DURATION, 0); 
    values.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE); 
    values.put(CallLog.Calls.NEW, 1); 
    values.put(CallLog.Calls.CACHED_NAME, ""); 
    values.put(CallLog.Calls.CACHED_NUMBER_TYPE, 0); 
    values.put(CallLog.Calls.CACHED_NUMBER_LABEL, ""); 
    Log.d(TAG, "Inserting call log placeholder for " + number); 
    contentResolver.insert(CallLog.Calls.CONTENT_URI, values); 
} 

(Mã lấy từ Google Voice Callback for Android)

Hãy nhớ thêm các điều khoản trong Tệp kê khai

<uses-permission 
    android:name="android.permission.READ_CONTACTS"></uses-permission> 
<uses-permission 
    android:name="android.permission.WRITE_CONTACTS"></uses-permission> 

Về tùy chỉnh cơ sở dữ liệu nhật ký cuộc gọi, tôi không nghĩ là có thể.

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