Tôi đang tạo bộ chọn địa chỉ liên hệ của riêng mình, vì tôi cần hỗ trợ đa lựa chọn. Mọi thứ đều hoạt động tốt, ngoại trừ một vấn đề nhỏ với hình ảnh liên lạc.Làm cách nào để xác minh URI hình ảnh có hiệu lực trong Android?
Đối với những người liên hệ không có hình ảnh, tôi đang hiển thị hình ảnh "không có hình ảnh". Điều này làm việc tốt cho các số liên lạc trong sổ địa chỉ của điện thoại. Tôi đang gặp một vấn đề tuy nhiên khi nói đến hình ảnh từ địa chỉ liên lạc google của tôi.
Hầu hết các địa chỉ liên hệ trên google của tôi không có ảnh. Tuy nhiên, khi tôi truy vấn cơ sở dữ liệu hệ cho hình ảnh, nó vẫn trả về một URI cho họ về hình thức content://com.android.contacts/contacts/657/photo
(đó là định dạng tương tự như đối với danh bạ người làm có một bức ảnh.
Sau đó, khi tôi cố gắng để gán ảnh vào QuickContactBadge, sử dụng bdg.setImageURI(pic);
nó đặt nó về cơ bản một bức tranh trống, và ghi lại một thông điệp INFO im lặng trong đó nêu:
INFO/System.out(3968): resolveUri failed on bad bitmap uri:
content://com.android.contacts/contacts/657/photo
tôi cần phải biết làm thế nào tôi có thể một trong hai
a) xác nhận URI hoặc
b) bắt được thông báo INFO trên
c) truy vấn ImageView/huy hiệu để xem nếu nó tìm thấy một hình ảnh hợp lệ
để tôi có thể gán các địa chỉ liên lạc của tôi "không có hình ảnh" hình ảnh .
Làm cách nào để tôi thực hiện việc này?
EDIT 20110812,0044
Tôi đã thử thêm này để mã của tôi theo đề nghị của Laurence (mà anh ấy kể từ khi bị loại bỏ):
// rv is my URI variable
if(rv != null) {
Drawable d = Drawable.createFromPath(rv.toString());
if (d == null) rv = null;
}
Trong khi các điểm tiếp xúc google bây giờ có được tôi "không có hình ảnh" hình ảnh , ... do đó, hãy thực hiện tất cả các địa chỉ liên hệ khác, kể cả những địa chỉ liên hệ do thực tế có hình ảnh.
Bạn có biết nơi những hình ảnh tiếp xúc được lưu trữ trên SDcard/bộ nhớ trong? Có lẽ nếu bạn có thể xác định vị trí thư mục, sau đó lặp qua tất cả các thành viên bạn có thể xác nhận nếu hình ảnh được chọn tồn tại hay không. –
Vâng, URI duy nhất tôi nhận được là U nội dung: //com.android.contacts/... 'URI được đề cập, chỉ đơn giản đề cập đến một trường trong tệp' Contacts2.db' trong kho lưu trữ db. Nhìn vào khung nhìn PHOTOS trong SQLLite Editor, có vẻ như các bức ảnh được lưu trữ trực tiếp trong db dưới dạng dữ liệu nhị phân thô (trường dữ liệu 'không hiển thị đường dẫn, nhưng chỉ hiển thị' (dữ liệu) '). Một trong các địa chỉ liên hệ được đề cập KHÔNG hiển thị '(dữ liệu)' cho ảnh của họ, nhưng hiển thị một trường trống. Có bằng cách nào đó tôi có thể truy vấn URI để xem nếu nó trả về NULL? – eidylon
Câu hỏi thực sự là: tại sao những bản ghi hình ảnh giả được lưu trữ trong cơ sở dữ liệu ở tất cả? – xnagyg