@SuppressLint("NewApi")
@Override
public Uri getSelfIdentityUri() {
String[] PROJECTION = new String[] {
PhoneLookup.DISPLAY_NAME,
PhoneLookup.LOOKUP_KEY,
PhoneLookup._ID,
};
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(ContactsContract.Profile.CONTENT_URI,
PROJECTION, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
return Contacts.getLookupUri(cursor.getLong(2), cursor.getString(1));
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}
java类android.provider.ContactsContract的实例源码
ContactIdentityManagerICS.java 文件源码
项目:Cable-Android
阅读 32
收藏 0
点赞 0
评论 0
MainActivity.java 文件源码
项目:androidbeginners-Lesson3
阅读 24
收藏 0
点赞 0
评论 0
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String[] projectionFields = new String[]{
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_URI
};
CursorLoader cursorLoader = new CursorLoader(MainActivity.this,
ContactsContract.Contacts.CONTENT_URI,
projectionFields,
null,
null,
null);
return cursorLoader;
}
ContactPickerActivity.java 文件源码
项目:SOS-The-Healthcare-Companion
阅读 34
收藏 0
点赞 0
评论 0
private void readContactDetails(Cursor cursor) {
if (cursor != null && cursor.moveToFirst()) {
cursor.moveToPrevious();
while (cursor.moveToNext()) {
String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.LOOKUP_KEY));
ContactImpl contact = mContactsByLookupKey.get(lookupKey);
if (contact != null) {
readContactDetails(cursor, contact);
}
}
}
sortAndPostCopy(mContacts);
joinContactsAndGroups(mContacts);
}
LoginActivity.java 文件源码
项目:ShotsNewsApp
阅读 32
收藏 0
点赞 0
评论 0
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(this,
// Retrieve data rows for the device user's 'profile' contact.
Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
// Select only email addresses.
ContactsContract.Contacts.Data.MIMETYPE +
" = ?", new String[]{ContactsContract.CommonDataKinds.Email
.CONTENT_ITEM_TYPE},
// Show primary email addresses first. Note that there won't be
// a primary email address if the user hasn't specified one.
ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
}
Utils.java 文件源码
项目:Impala
阅读 33
收藏 0
点赞 0
评论 0
public static List<String> getNameEmailDetails(ContentResolver resolver) {
ArrayList<String> names = new ArrayList<>();
Cursor cur = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
Cursor cur1 =
resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[] { id }, null);
getEmailFromCursor(names, cur1);
cur1.close();
}
}
return names;
}
WebRtcCallScreen.java 文件源码
项目:Cable-Android
阅读 33
收藏 0
点赞 0
评论 0
private void setPersonInfo(final @NonNull Recipient recipient) {
this.recipient = recipient;
this.recipient.addListener(this);
final Context context = getContext();
new AsyncTask<Void, Void, ContactPhoto>() {
@Override
protected ContactPhoto doInBackground(Void... params) {
DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Uri contentUri = ContactsContract.Contacts.lookupContact(context.getContentResolver(),
recipient.getContactUri());
windowManager.getDefaultDisplay().getMetrics(metrics);
return ContactPhotoFactory.getContactPhoto(context, contentUri, null, metrics.widthPixels);
}
@Override
protected void onPostExecute(final ContactPhoto contactPhoto) {
WebRtcCallScreen.this.photo.setImageDrawable(contactPhoto.asCallCard(context));
}
}.execute();
this.name.setText(recipient.getName());
this.phoneNumber.setText(recipient.getNumber());
}
Contacts.java 文件源码
项目:q-mail
阅读 41
收藏 0
点赞 0
评论 0
/**
* Start the activity to add information to an existing contact or add a
* new one.
*
* @param email An {@link Address} instance containing the email address
* of the entity you want to add to the contacts. Optionally
* the instance also contains the (display) name of that
* entity.
*/
public void createContact(final Address email) {
final Uri contactUri = Uri.fromParts("mailto", email.getAddress(), null);
final Intent contactIntent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT);
contactIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
contactIntent.setData(contactUri);
// Pass along full E-mail string for possible create dialog
contactIntent.putExtra(ContactsContract.Intents.EXTRA_CREATE_DESCRIPTION,
email.toString());
// Only provide personal name hint if we have one
final String senderPersonal = email.getPersonal();
if (senderPersonal != null) {
contactIntent.putExtra(ContactsContract.Intents.Insert.NAME, senderPersonal);
}
mContext.startActivity(contactIntent);
}
ContactsActivity.java 文件源码
项目:card-reader
阅读 40
收藏 0
点赞 0
评论 0
/**
* Starts the contacts intent and requests permission to write to contacts if permission doesn't exist
*/
public void startContactsActivityIntent(){
String[] permissions = {"android.permission.WRITE_CONTACTS"};
Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CONTACTS) != PackageManager
.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, permissions, CONTACTS_PERMISSION);
}
else {
if (intent.resolveActivity(getPackageManager()) != null) {
intent.putExtra(ContactsContract.Intents.Insert.NAME, name);
intent.putExtra(ContactsContract.Intents.Insert.EMAIL, email);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, phone);
startActivity(intent);
}
}
}
ContactsPhotoRequestHandler.java 文件源码
项目:GitHub
阅读 34
收藏 0
点赞 0
评论 0
private InputStream getInputStream(Request data) throws IOException {
ContentResolver contentResolver = context.getContentResolver();
Uri uri = data.uri;
switch (matcher.match(uri)) {
case ID_LOOKUP:
uri = ContactsContract.Contacts.lookupContact(contentResolver, uri);
if (uri == null) {
return null;
}
// Resolved the uri to a contact uri, intentionally fall through to process the resolved uri
case ID_CONTACT:
return openContactPhotoInputStream(contentResolver, uri, true);
case ID_THUMBNAIL:
case ID_DISPLAY_PHOTO:
return contentResolver.openInputStream(uri);
default:
throw new IllegalStateException("Invalid uri: " + uri);
}
}
FriendsActivity.java 文件源码
项目:Goalie_Android
阅读 42
收藏 0
点赞 0
评论 0
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
finish();
return true;
case R.id.action_invite_friends:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, Constants.REQUEST_PERMISSIONS_CONTACT);
return true;
case R.id.action_add_friends:
AddContactDialog addContactDialog = new AddContactDialog();
addContactDialog.setOnAdded(this);
addContactDialog.show(getSupportFragmentManager(), "AddContactDialog");
return true;
}
return super.onOptionsItemSelected(item);
}
BaseContactQueryCB.java 文件源码
项目:android-contact-extractor
阅读 26
收藏 0
点赞 0
评论 0
@Override
public CName getName() {
CName cName = new CName();
String familyName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
String givenName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String photoUri = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.PHOTO_URI));
cName.setFamilyName(familyName);
cName.setDisplayName(displayName);
cName.setGivenName(givenName);
cName.setPhotoUri(photoUri);
return cName;
}
Login_BT_Activity.java 文件源码
项目:dapay
阅读 77
收藏 0
点赞 0
评论 0
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(this,
// Retrieve data rows for the device user's 'profile' contact.
Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
// Select only email addresses.
ContactsContract.Contacts.Data.MIMETYPE +
" = ?", new String[]{ContactsContract.CommonDataKinds.Email
.CONTENT_ITEM_TYPE},
// Show primary email addresses first. Note that there won't be
// a primary email address if the user hasn't specified one.
ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
}
LoginActivity.java 文件源码
项目:NewsApp
阅读 34
收藏 0
点赞 0
评论 0
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(this,
// Retrieve data rows for the device user's 'profile' contact.
Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
// Select only email addresses.
ContactsContract.Contacts.Data.MIMETYPE +
" = ?", new String[]{ContactsContract.CommonDataKinds.Email
.CONTENT_ITEM_TYPE},
// Show primary email addresses first. Note that there won't be
// a primary email address if the user hasn't specified one.
ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
}
ContactsGetter.java 文件源码
项目:AndroidContacts
阅读 42
收藏 0
点赞 0
评论 0
private SparseArray<Group> getGroupsMap() {
SparseArray<Group> idGroupMap = new SparseArray<>();
Cursor groupCursor = mResolver.query(
ContactsContract.Groups.CONTENT_URI,
new String[]{
ContactsContract.Groups._ID,
ContactsContract.Groups.TITLE
}, null, null, null
);
if (groupCursor != null) {
while (groupCursor.moveToNext()) {
int id = groupCursor.getInt(groupCursor.getColumnIndex(ContactsContract.Groups._ID));
String title = groupCursor.getString(groupCursor.getColumnIndex(ContactsContract.Groups.TITLE));
idGroupMap.put(id, new Group()
.setGroupId(id)
.setGroupTitle(title));
}
groupCursor.close();
}
return idGroupMap;
}
ContactsPickerActivity.java 文件源码
项目:custode
阅读 39
收藏 0
点赞 0
评论 0
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
contactsAdapter.clear();
Set<String> favoriteContacts = CustodeUtils.getFavoriteContacts(this);
LinkedList<ContactsAdapter.ContactItem> tempArray = new LinkedList<>();
int favoriteLimit = 0; // usato per ordinare i contatti preferiti in cima alla lista
int nameColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int numberColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
while (cursor.moveToNext()) {
String name = cursor.getString(nameColumnIndex);
String number = cursor.getString(numberColumnIndex);
boolean favorite = favoriteContacts.remove(number);
if (favorite)
tempArray.add(favoriteLimit++, new ContactsAdapter.ContactItem(name, number, true));
else
tempArray.addLast(new ContactsAdapter.ContactItem(name, number, false));
}
if (favoriteContacts.size() > 0) // => favoriteContacts contiene numeri che non sono più presenti in rubrica
for (String favoriteContact : favoriteContacts)
tempArray.addFirst(new ContactsAdapter.ContactItem("", favoriteContact, true));
contactsAdapter.addAll(tempArray);
}
LoginActivity.java 文件源码
项目:Shared-Route
阅读 39
收藏 0
点赞 0
评论 0
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(this,
// Retrieve data rows for the device user's 'profile' contact.
Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
// Select only email addresses.
ContactsContract.Contacts.Data.MIMETYPE +
" = ?", new String[]{ContactsContract.CommonDataKinds.Email
.CONTENT_ITEM_TYPE},
// Show primary email addresses first. Note that there won't be
// a primary email address if the user hasn't specified one.
ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
}
ContactSelectionListAdapter.java 文件源码
项目:PeSanKita-android
阅读 46
收藏 0
点赞 0
评论 0
@Override
public void onBindItemViewHolder(ViewHolder viewHolder, @NonNull Cursor cursor) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(ContactsDatabase.ID_COLUMN));
int contactType = cursor.getInt(cursor.getColumnIndexOrThrow(ContactsDatabase.CONTACT_TYPE_COLUMN));
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsDatabase.NAME_COLUMN));
String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsDatabase.NUMBER_COLUMN));
int numberType = cursor.getInt(cursor.getColumnIndexOrThrow(ContactsDatabase.NUMBER_TYPE_COLUMN));
String label = cursor.getString(cursor.getColumnIndexOrThrow(ContactsDatabase.LABEL_COLUMN));
String labelText = ContactsContract.CommonDataKinds.Phone.getTypeLabel(getContext().getResources(),
numberType, label).toString();
int color = (contactType == ContactsDatabase.PUSH_TYPE) ? drawables.getColor(0, 0xa0000000) :
drawables.getColor(1, 0xff000000);
boolean preSelected = numbers != null && numbers.contains(number);
viewHolder.getView().unbind();
viewHolder.getView().set(id, contactType, name, number, labelText, color, multiSelect);
viewHolder.getView().setChecked(preSelected || selectedContacts.containsKey(id));
viewHolder.getView().setEnabled(!preSelected);
}
AddressServiceImpl.java 文件源码
项目:amap
阅读 39
收藏 0
点赞 0
评论 0
private static void addContactToGroup(ContentResolver mResolver, int contactId, int groupId)
{
// judge whether the contact has been in the group
boolean b1 = ifExistContactInGroup(mResolver, contactId, groupId);
if (b1)
{
// the contact has been in the group
return;
}
else
{
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID, contactId);
values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, groupId);
values.put(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
mResolver.insert(ContactsContract.Data.CONTENT_URI, values);
}
}
ConversationListActivity.java 文件源码
项目:PeSanKita-android
阅读 32
收藏 0
点赞 0
评论 0
private void initializeContactUpdatesReceiver() {
observer = new ContentObserver(null) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.w(TAG, "Detected android contact data changed, refreshing cache");
RecipientFactory.clearCache(ConversationListActivity.this);
ConversationListActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
chatsFragment.getListAdapter().notifyDataSetChanged();
}
});
}
};
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI,
true, observer);
}
AvatarImageView.java 文件源码
项目:PeSanKita-android
阅读 23
收藏 0
点赞 0
评论 0
private void setAvatarClickHandler(final Recipients recipients, boolean quickContactEnabled) {
if (!recipients.isGroupRecipient() && quickContactEnabled) {
setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Recipient recipient = recipients.getPrimaryRecipient();
if (recipient != null && recipient.getContactUri() != null) {
ContactsContract.QuickContact.showQuickContact(getContext(), AvatarImageView.this, recipient.getContactUri(), ContactsContract.QuickContact.MODE_LARGE, null);
} else if (recipient != null) {
final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, recipient.getNumber());
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
getContext().startActivity(intent);
}
}
});
} else {
setOnClickListener(null);
}
}
RegisterUserActivity.java 文件源码
项目:Raffler-Android
阅读 43
收藏 0
点赞 0
评论 0
private void loadUserInfoFromPhone(){
User user = AppManager.getSession();
if (user != null) {
etName.setText(user.getName());
Util.setProfileImage(user.getPhoto(), imgProfile);
} else {
if (checkPermissions()) {
String[] projection = new String[] {
Phone.DISPLAY_NAME,
Phone.HAS_PHONE_NUMBER,
Phone.NUMBER,
Phone.CONTACT_ID};
Cursor cursor = getApplication().getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null);
if (cursor.moveToFirst()){
etName.setText(cursor.getString(cursor.getColumnIndex("display_name")));
}
cursor.close();
}
}
}
ContactAccessorSdk5.java 文件源码
项目:alerta-fraude
阅读 35
收藏 0
点赞 0
评论 0
@Override
/**
* This method will remove a Contact from the database based on ID.
* @param id the unique ID of the contact to remove
*/
public boolean remove(String id) {
int result = 0;
Cursor cursor = mApp.getActivity().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
null,
ContactsContract.Contacts._ID + " = ?",
new String[] { id }, null);
if (cursor.getCount() == 1) {
cursor.moveToFirst();
String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
result = mApp.getActivity().getContentResolver().delete(uri, null, null);
} else {
LOG.d(LOG_TAG, "Could not find contact with ID");
}
return (result > 0) ? true : false;
}
PermissionsChecker.java 文件源码
项目:permissions4m
阅读 33
收藏 0
点赞 0
评论 0
/**
* read contacts, {@link android.Manifest.permission#READ_CONTACTS}
*
* @param activity
* @return true if success
* @throws Exception
*/
private static boolean checkReadContacts(Activity activity) throws Exception {
Cursor cursor = activity.getContentResolver().query(ContactsContract.CommonDataKinds.Phone
.CONTENT_URI, null, null, null, null);
if (cursor != null) {
if (ManufacturerSupportUtil.isForceManufacturer()) {
if (isNumberIndexInfoIsNull(cursor, cursor.getColumnIndex(ContactsContract.CommonDataKinds
.Phone.NUMBER))) {
cursor.close();
return false;
}
}
cursor.close();
return true;
} else {
return false;
}
}
ContactFetcher.java 文件源码
项目:contacts-search-android
阅读 23
收藏 0
点赞 0
评论 0
public void matchContactEmails(Map<String, Contact> contactsMap) {
// Get email
final String[] emailProjection = new String[]{
Email.DATA,
Email.TYPE,
Email.CONTACT_ID,
};
Cursor email = new CursorLoader(context,
Email.CONTENT_URI,
emailProjection,
null,
null,
null).loadInBackground();
if (email.moveToFirst()) {
final int contactEmailColumnIndex = email.getColumnIndex(Email.DATA);
final int contactTypeColumnIndex = email.getColumnIndex(Email.TYPE);
final int contactIdColumnsIndex = email.getColumnIndex(Email.CONTACT_ID);
while (!email.isAfterLast()) {
final String address = email.getString(contactEmailColumnIndex);
final String contactId = email.getString(contactIdColumnsIndex);
final int type = email.getInt(contactTypeColumnIndex);
String customLabel = "Custom";
Contact contact = contactsMap.get(contactId);
if (contact == null) {
continue;
}
CharSequence emailType = ContactsContract.CommonDataKinds.Email.getTypeLabel(context.getResources(), type, customLabel);
contact.addEmail(address, emailType.toString());
email.moveToNext();
}
}
email.close();
}
ImageDecorder.java 文件源码
项目:Sendroid
阅读 27
收藏 0
点赞 0
评论 0
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
protected InputStream getContactPhotoStream(Uri uri) {
ContentResolver res = context.getContentResolver();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return ContactsContract.Contacts.openContactPhotoInputStream(res, uri, true);
} else {
return ContactsContract.Contacts.openContactPhotoInputStream(res, uri);
}
}
RawContactsProjection.java 文件源码
项目:ContentPal
阅读 26
收藏 0
点赞 0
评论 0
public RawContactsProjection()
{
// TODO: it's probably better to compose this from smaller projections with just a few columns
super(new MultiProjection<ContactsContract.RawContacts>(
ContactsContract.RawContacts._ID,
ContactsContract.RawContacts.CONTACT_ID,
ContactsContract.RawContacts.AGGREGATION_MODE,
ContactsContract.RawContacts.DELETED,
// the following column doesn't seem to work on Android 7.1
//ContactsContract.RawContacts.RAW_CONTACT_IS_READ_ONLY,
// values from ContactNameColumns
ContactsContract.RawContacts.DISPLAY_NAME_SOURCE,
ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY,
ContactsContract.RawContacts.DISPLAY_NAME_ALTERNATIVE,
ContactsContract.RawContacts.PHONETIC_NAME_STYLE,
ContactsContract.RawContacts.PHONETIC_NAME,
ContactsContract.RawContacts.SORT_KEY_PRIMARY,
ContactsContract.RawContacts.SORT_KEY_ALTERNATIVE,
// values from SyncColumns
ContactsContract.RawContacts.ACCOUNT_NAME,
ContactsContract.RawContacts.ACCOUNT_TYPE,
ContactsContract.RawContacts.DIRTY,
ContactsContract.RawContacts.SOURCE_ID,
ContactsContract.RawContacts.VERSION));
}
ContactsPickerHelper.java 文件源码
项目:RLibrary
阅读 31
收藏 0
点赞 0
评论 0
/**
* 同步返回联系人列表
*/
public static List<ContactsInfo> getContactsList(Context context) {
//检查权限
if (Build.VERSION.SDK_INT >= 23) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
return new ArrayList<>();
}
}
final ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, new String[]{"_id"}, null, null, null);
List<ContactsInfo> contactsInfos = new ArrayList<>();
if (cursor != null) {
//枚举所有联系人的id
if (cursor.getCount() > 0) {
L.w("联系人总数量:" + cursor.getCount()); //就是联系人的总数
int count = 0;
if (cursor.moveToFirst()) {
do {
int contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);//获取 id 所在列的索引
String contactId = cursor.getString(contactIdIndex);//联系人id
final List<String> phones = getData1(contentResolver, contactId, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
if (phones.isEmpty()) {
continue;
} else {
String name;
final List<String> names = getData1(contentResolver, contactId, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
if (names.isEmpty()) {
name = phones.get(0);
} else {
name = names.get(0);
}
//相同联系人的不同手机号码视为不同的联系人
for (String phone : phones) {
// 去除非手机号
if (!RegexUtils.isMobileExact(StringUtil.removeBlanks(phone))) {
continue;
}
ContactsInfo io = new ContactsInfo();
io.contactId = contactId;
io.name = name;
io.phone = StringUtil.removeBlanks(phone);
io.letter = String.valueOf(Pinyin.toPinyin(name.charAt(0)).toUpperCase().charAt(0));
contactsInfos.add(io);
}
}
// L.e("-------------------------" + count + "----------------------");
// L.w("联系人ID:" + contactId);
// final String name = getData1(contentResolver, contactId, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
// L.w("联系人名称:" + Pinyin.toPinyin(name.charAt(0)).toUpperCase().charAt(0) + " " + name);
// L.w("联系人电话:" + getData1(contentResolver, contactId, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE));
// logData(contentResolver, contactId);
// count++;
} while (cursor.moveToNext());
}
}
cursor.close();
}
return contactsInfos;
}
OfficeLocationData.java 文件源码
项目:ContentPal
阅读 26
收藏 0
点赞 0
评论 0
@NonNull
@Override
public ContentProviderOperation.Builder updatedBuilder(TransactionContext transactionContext, @NonNull ContentProviderOperation.Builder builder)
{
return mDelegate.updatedBuilder(transactionContext, builder)
.withValue(ContactsContract.CommonDataKinds.Organization.OFFICE_LOCATION, mOfficeLocation == null ? null : mOfficeLocation.toString());
}
BaseContactQueryCB.java 文件源码
项目:android-contact-extractor
阅读 30
收藏 0
点赞 0
评论 0
@Override
public CEvents getEvents() {
CEvents cEvents = new CEvents();
String startData = cursor.getString(
cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE));
int type = cursor.getInt(
cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.TYPE));
switch (type) {
case ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY:
cEvents.setAnniversay(startData);
break;
case ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY:
cEvents.setBirthDay(startData);
break;
default:
break;
}
cEvents.setDisplayName(cursor.getString(
cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.DISPLAY_NAME)));
cEvents.setPhotoUri(cursor.getString(
cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.PHOTO_URI)));
return cEvents;
}
MyCursorLoader.java 文件源码
项目:GitHub
阅读 30
收藏 0
点赞 0
评论 0
/**
* 查询数据等操作放在这里执行
*/
@Override
protected Cursor onLoadInBackground() {
Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
mContactProjection, null,null, null);
return cursor;
}