|
|
@@ -0,0 +1,126 @@
|
|
|
+package com.sheep.gamegroup.util;
|
|
|
+
|
|
|
+import android.content.ContentResolver;
|
|
|
+import android.content.Context;
|
|
|
+import android.database.Cursor;
|
|
|
+import android.net.Uri;
|
|
|
+import android.provider.ContactsContract;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.sheep.gamegroup.model.entity.BaseMessage;
|
|
|
+import com.sheep.gamegroup.model.util.SheepSubscriber;
|
|
|
+import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
+import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import io.reactivex.Observable;
|
|
|
+import io.reactivex.ObservableEmitter;
|
|
|
+import io.reactivex.ObservableOnSubscribe;
|
|
|
+import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.schedulers.Schedulers;
|
|
|
+import rx.functions.Action1;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by realicing on 2019/3/19.
|
|
|
+ * realicing@sina.com
|
|
|
+ */
|
|
|
+public class ContactUtil {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取通讯录中所有联系人的简单信息
|
|
|
+ *
|
|
|
+ * @throws Throwable
|
|
|
+ */
|
|
|
+ public static List<Map<String, String> > getAllContact(Context context) throws Throwable {
|
|
|
+
|
|
|
+ List<Map<String, String> > list = new ArrayList<>();
|
|
|
+ Map<String, String> contactIdMap = new HashMap<String, String>();
|
|
|
+ //获取联系人信息的Uri
|
|
|
+ Uri uri = ContactsContract.Contacts.CONTENT_URI;
|
|
|
+ //获取ContentResolver
|
|
|
+ ContentResolver contentResolver = context.getContentResolver();
|
|
|
+ //查询数据,返回Cursor
|
|
|
+ Cursor cursor = contentResolver.query(uri, null, null, null, null);
|
|
|
+ if (cursor == null) {
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+ while (cursor.moveToNext()) {
|
|
|
+ //获取联系人的ID
|
|
|
+ String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
|
|
|
+ if (contactIdMap.containsKey(contactId)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ contactIdMap.put(contactId, contactId);
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ //获取联系人的姓名
|
|
|
+ String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
|
|
|
+ map.put("name", name);
|
|
|
+ //查询电话类型的数据操作
|
|
|
+ Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
|
|
|
+ null,
|
|
|
+ ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
|
|
|
+ null, null);
|
|
|
+ if(phones != null) {
|
|
|
+ while (phones.moveToNext()) {
|
|
|
+ String phoneNumber = phones.getString(phones.getColumnIndex(
|
|
|
+ ContactsContract.CommonDataKinds.Phone.NUMBER));
|
|
|
+ //添加Phone的信息
|
|
|
+ map.put("mobile", phoneNumber);
|
|
|
+ }
|
|
|
+ phones.close();
|
|
|
+ }
|
|
|
+
|
|
|
+// //查询Email类型的数据操作
|
|
|
+// Cursor emails = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
|
|
|
+// null,
|
|
|
+// ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,
|
|
|
+// null, null);
|
|
|
+// while (emails.moveToNext()) {
|
|
|
+// String emailAddress = emails.getString(emails.getColumnIndex(
|
|
|
+// ContactsContract.CommonDataKinds.Email.DATA));
|
|
|
+// //添加Email的信息
|
|
|
+// contactBean.put("emailAddress", emailAddress);
|
|
|
+// }
|
|
|
+// emails.close();
|
|
|
+ list.add(map);
|
|
|
+ }
|
|
|
+ cursor.close();
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static void getAllContactList(Action1<String> action1) {
|
|
|
+ Observable.create((ObservableOnSubscribe<BaseMessage>) observableEmitter -> {
|
|
|
+ BaseMessage baseMessage = new BaseMessage();
|
|
|
+ try {
|
|
|
+ List<Map<String, String>> list = getAllContact(SheepApp.getInstance());
|
|
|
+ baseMessage.setCode(200);
|
|
|
+ baseMessage.setData(list);
|
|
|
+ baseMessage.setTotal(ListUtil.size(list));
|
|
|
+ } catch (Throwable throwable) {
|
|
|
+ throwable.printStackTrace();
|
|
|
+ baseMessage.setMsg(throwable.getMessage());
|
|
|
+ baseMessage.setCode(500);
|
|
|
+ }
|
|
|
+ observableEmitter.onNext(baseMessage);
|
|
|
+ })
|
|
|
+ .subscribeOn(Schedulers.io())
|
|
|
+ .observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
|
|
|
+ @Override
|
|
|
+ public void onNext(BaseMessage baseMessage) {
|
|
|
+ action1.call(JSON.toJSONString(baseMessage));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(BaseMessage baseMessage) {
|
|
|
+ action1.call(JSON.toJSONString(baseMessage));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|