2010-09-26 35 views
6

Tôi cần sửa lỗi trong ứng dụng cũ của tôi. Một phần của lỗi là cách tôi chọn liên hệ. Dưới đây là những gì tôi cần:Làm thế nào để chọn địa chỉ liên lạc chỉ từ địa chỉ liên lạc google (không facebook vv) với số điện thoại?

  1. Tiếp xúc phải từ google địa chỉ liên lạc danh sách 'bình thường', ví dụ: Tôi không muốn nhận được bất kỳ danh bạ từ facebook hoặc tương đương.
  2. Địa chỉ liên hệ phải có ít nhất một số điện thoại.
  3. Địa chỉ liên hệ phải từ nhà cung cấp android.provider.Contacts cũ.
  4. Nếu tôi có thể sử dụng Mục đích để tìm URI liên hệ mà không phải tự tạo danh sách lựa chọn, thì đó là tiền thưởng.

Nghe có vẻ đơn giản, nhưng tôi thực sự đang gặp khó khăn. Đây là những gì tôi đang cố gắng:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.People.CONTENT_URI); 
    startActivityForResult(intent, PICK_CONTACT_REQUEST); 
} 

Điều đó hoạt động OK. Tôi vẫn thấy các liên hệ không có số điện thoại, nhưng tôi có thể sống với điều đó. Tệ hơn nữa là tôi vẫn thấy địa chỉ liên hệ facebook trong danh sách! Điều này dường như mâu thuẫn với báo giá sau đây được tìm thấy tại số Froyo API for the deprecated Contacts content provider:

Các API đã được thay thế bằng ContactsContract. Các API mới hơn cho phép truy cập nhiều tài khoản và hỗ trợ tổng hợp các liên hệ tương tự. Các API này tiếp tục hoạt động nhưng sẽ chỉ trả lại dữ liệu cho tài khoản Google đầu tiên được tạo, phù hợp với hành vi gốc.

Điều đó nghe giống như những gì tôi muốn, nhưng than ôi, không phải những gì tôi nhận được.

Cuối cùng, đây là những câu hỏi cụ thể của tôi mà tôi hy vọng ai đó có thể trả lời:

  1. Tại sao tôi lại thấy danh bạ Facebook khi sử dụng android.provider.Contacts cung cấp nội dung?
  2. Nếu cách này không hiệu quả, tôi có thể làm cách nào khác để người dùng chọn liên hệ trên google với số điện thoại?

Rất cám ơn. Gustav

+0

Did u tìm ra một giải pháp ?? –

Trả lời

0

Tôi gặp một vấn đề tương tự, điều này ít nhất cung cấp cho bạn địa chỉ liên lạc với số điện thoại (facebook bao gồm) ...

Intent intent = new Intent(Intent.ACTION_PICK); 
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); 
startActivityForResult(intent, PICK_CONTACT_REQUEST); 
Các vấn đề liên quan