Tôi muốn đọc Liên hệ qua Contacts Picker
như thế này:Đọc Danh bạ mà không có quyền?
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(contact, CONTACT_PICK_CODE);
Nếu tôi nhận được kết quả, các intent.getData()
chứa một uri
để tra cứu các liên hệ, nhưng tôi cần sự cho phép READ_CONTACTS
để đọc nó.
Tôi nghĩ có thể nhận được một Liên hệ mà không có sự cho phép này, tương tự như sự cho phép của CALL
: Nếu tôi muốn thực hiện cuộc gọi trực tiếp, tôi cần nó, nhưng không có nó, tôi có thể gửi số điện thoại đến điện thoại, và người dùng phải nhấp vào nút gọi.
Có chức năng tương tự cho READ_CONTACTS
Tôi không biết?
Tôi đồng ý với một mức độ nào. Nhưng "để nhập dữ liệu Contakt bằng tay" là một ví dụ xấu cho "gửi số để quay số". Tôi có thể gửi số thực tế và người dùng KHÔNG phải nhập chính nó. Nếu tôi muốn "truy vấn địa chỉ liên hệ trong nền" như trong một EditText tự động hoàn thành, Giấy phép có ý nghĩa hoàn chỉnh. Người dùng có thể không biết rằng các liên hệ được truy cập. NHƯNG Nếu tôi hiển thị người dùng ỨNG DỤNG LIÊN HỆ HIS, và anh ta phải chọn một, làm thế nào anh ta có thể không nhận thức được rằng "liên lạc" ong của mình truy cập? Nó chỉ là một convinience cho anh ta, thay vì Nhập dữ liệu, để lấy một từ Liên hệ –
PLUS rằng hầu hết các quyền thất bại tại 'startActivityForResult'. trong ContactPicker người dùng có thể chọn liên hệ của mình, và tôi nhận được một dữ liệu Intent Back, KHÔNG cần giấy phép. Dữ liệu không may chỉ chứa một uri tra cứu, mà sau đó cần sự cho phép này Nếu bạn muốn đọc nó. –
Nếu tôi hiểu rằng bạn muốn người dùng chọn một liên hệ nhưng do đó bạn phải đọc tất cả địa chỉ liên hệ của mình và tạo danh sách để liên hệ hoặc người dùng-ứng dụng liên hệ phải gửi dữ liệu liên hệ từ người đã chọn đến ý định. Cách thứ hai có thể là không thể tùy thuộc vào ứng dụng liên lạc của người dùng và người đầu tiên cần sự cho phép :) – DaKirsche