2010-04-09 33 views
5

Tôi có tiện ích mở danh sách liên hệ theo số điện thoại. Tôi đang sử dụng Danh bạ.Intents.SHOW_OR_CREATE_CONTACT Tôi biết điều đó không được chấp nhận nhưng tôi muốn điều này hoạt động trên Android 1.6. Tôi có số điện thoại để sử dụng cho mục đích tra cứu. đây là mã sốAndroid - Hiển thị danh sách liên hệ có cùng số điện thoại

Intent contViewIntent = new Intent(Contacts.Intents.SHOW_OR_CREATE_CONTACT); 
contViewIntent.setData(Uri.fromParts("tel", number, null)); 

PendingIntent contPendIntent = PendingIntent.getActivity(context, 0, contViewIntent, 0); 
views.setOnClickPendingIntent(viewID, contPendIntent); 

Khi danh sách liên hệ có 2 hoặc nhiều số liên lạc có cùng số thì thao tác này sẽ mở danh sách liên hệ và cho người dùng chọn. Điều này hoạt động tốt trên 1,6, nhưng trên 2,0 và ở trên nó cho thấy một danh sách các địa chỉ liên lạc chỉ với số 1 hoặc số 2 trong tên và khi bạn chọn một trong những người trong danh sách để xem bạn nhận được một lỗi.

04-09 19: 12: 47,891: LỖI/CursorWindow (105): Bad yêu cầu cho khe lĩnh vực 0,6. numRows = 2, numColumns = 6

04-09 19: 12: 47,992: LỖI/AndroidRuntime (105): java.lang.IllegalStateException: có được khe lĩnh vực từ hàng 0 col 6 thất bại

Tôi làm cách nào để làm việc này trên 1.6 và 2.0 ở trên?

+0

Tôi nghĩ rằng lỗi đang cố gắng nói rằng nó mong đợi một hàng, nhưng là nhận được hai? Có lẽ ứng dụng liên hệ trong Android sau đã xóa chức năng liên hệ mà bạn đề cập đến? - chỉ là đoán – DEzra

Trả lời

0

Tôi nghĩ rằng bạn có thể tốt hơn bằng cách sử dụng cung cấp nội dung Android api kết hợp với một truy vấn SQL (tìm hàng hoặc hàng với trận đấu số điện thoại):

http://developer.android.com/guide/topics/providers/content-providers.html

Sau đó, bạn có thể hiển thị một màn hình tùy chọn hỏi người dùng để chọn liên hệ nào là thích hợp nếu truy vấn trả về hai liên hệ.

Sau đó, bạn có thể chuyển trường _id (là duy nhất) cho ứng dụng danh bạ để mở số liên lạc đã chọn (tránh lỗi bạn nhìn thấy).

1

Android 2.0 có hoàn toàn API mới để quản lý danh bạ (tra cứu ContactsContract). Trong ứng dụng của tôi, tôi đã viết quản lý liên lạc cấp thấp hai lần - một lần cho 2.0, một lần cho 1.6 trở xuống (tôi kiểm tra qua phản ánh để xem lớp ContactsContract có tồn tại không và chuyển sang mã 2.0+ trong trường hợp đó).

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