public static Intent prepareAddContactIntent(String displayName, String sipUri) { Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI); intent.putExtra(Insert.NAME, displayName); if (sipUri != null && sipUri.startsWith("sip:")) { sipUri = sipUri.substring(4); } ArrayList<ContentValues> data = new ArrayList<ContentValues>(); ContentValues sipAddressRow = new ContentValues(); sipAddressRow.put(Contacts.Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE); sipAddressRow.put(SipAddress.SIP_ADDRESS, sipUri); data.add(sipAddressRow); intent.putParcelableArrayListExtra(Insert.DATA, data); return intent; }
public static Intent prepareEditContactIntentWithSipAddress(int id, String sipUri) { Intent intent = new Intent(Intent.ACTION_EDIT, Contacts.CONTENT_URI); Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, id); intent.setData(contactUri); ArrayList<ContentValues> data = new ArrayList<ContentValues>(); ContentValues sipAddressRow = new ContentValues(); sipAddressRow.put(Contacts.Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE); sipAddressRow.put(SipAddress.SIP_ADDRESS, sipUri); data.add(sipAddressRow); intent.putParcelableArrayListExtra(Insert.DATA, data); return intent; }
public String getNameFromContact(Context context, Uri uri) { Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, new String[] {Contacts.DISPLAY_NAME}, null, null, null); if (cursor != null && cursor.moveToFirst()) return cursor.getString(0); } finally { if (cursor != null) cursor.close(); } return null; }
private void fillContactDataFromLookupKey(Uri lookupKeyUri, List<Recipient> recipients, Map<String, Recipient> recipientMap) { // We could use the contact id from the URI directly, but getting it from the lookup key is safer Uri contactContentUri = Contacts.lookupContact(contentResolver, lookupKeyUri); if (contactContentUri == null) { return; } String contactIdStr = getContactIdFromContactUri(contactContentUri); Cursor cursor = contentResolver.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=?", new String[] { contactIdStr }, null); if (cursor == null) { return; } fillContactDataFromCursor(cursor, recipients, recipientMap); }
private boolean fillContactDataFromNameAndEmail(String query, List<Recipient> recipients, Map<String, Recipient> recipientMap) { query = "%" + query + "%"; Uri queryUri = Email.CONTENT_URI; String selection = Contacts.DISPLAY_NAME_PRIMARY + " LIKE ? " + " OR (" + Email.ADDRESS + " LIKE ? AND " + Data.MIMETYPE + " = '" + Email.CONTENT_ITEM_TYPE + "')"; String[] selectionArgs = { query, query }; Cursor cursor = contentResolver.query(queryUri, PROJECTION, selection, selectionArgs, SORT_ORDER); if (cursor == null) { return false; } fillContactDataFromCursor(cursor, recipients, recipientMap); return true; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageViewContact = (ImageView) findViewById(R.id.image_contact); imageViewLookup = (ImageView) findViewById(R.id.image_lookup); imageViewPhoto = (ImageView) findViewById(R.id.image_photo); imageViewDisplayPhoto = (ImageView) findViewById(R.id.image_display_photo); findViewById(R.id.button_pick_contact).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); startActivityForResult(intent, REQUEST_CONTACT); } }); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CONTACT && resultCode == RESULT_OK) { final Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { final long contactId = cursor.getLong(cursor.getColumnIndex(Contacts._ID)); showContact(contactId); } } finally { if (cursor != null) { cursor.close(); } } return; } super.onActivityResult(requestCode, resultCode, data); }
@TargetApi(VERSION_CODES.ICE_CREAM_SANDWICH) private void showContact(long id) { GlideRequests glideRequests = GlideApp.with(this); RequestOptions originalSize = new RequestOptions().override(Target.SIZE_ORIGINAL); Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, id); glideRequests.load(contactUri).apply(originalSize).into(imageViewContact); Uri lookupUri = Contacts.getLookupUri(getContentResolver(), contactUri); glideRequests.load(lookupUri).apply(originalSize).into(imageViewLookup); Uri photoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY); glideRequests.load(photoUri).apply(originalSize).into(imageViewPhoto); if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) { Uri displayPhotoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.DISPLAY_PHOTO); glideRequests.load(displayPhotoUri).apply(originalSize).into(imageViewDisplayPhoto); } }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CONTACT && resultCode == RESULT_OK) { Uri uri = Preconditions.checkNotNull(data.getData()); final Cursor cursor = getContentResolver().query(uri, null, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { final long contactId = cursor.getLong(cursor.getColumnIndex(Contacts._ID)); showContact(contactId); } } finally { if (cursor != null) { cursor.close(); } } return; } super.onActivityResult(requestCode, resultCode, data); }
private Uri getContactUriForNumber(String number) { String[] PROJECTION = new String[] { PhoneLookup.DISPLAY_NAME, PhoneLookup.LOOKUP_KEY, PhoneLookup._ID, }; Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); Cursor cursor = null; try { cursor = context.getContentResolver().query(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; }
private long getSelfIdentityContactId() { Uri contactUri = getSelfIdentityUri(); if (contactUri == null) return -1; Cursor cursor = null; try { cursor = context.getContentResolver().query(contactUri, new String[] {ContactsContract.Contacts._ID}, null, null, null); if (cursor != null && cursor.moveToFirst()) { return cursor.getLong(0); } else { return -1; } } finally { if (cursor != null) cursor.close(); } }
@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; }
@Override public List<String> getCSipPhonesByGroup(Context ctxt, String groupName) { Cursor contacts = getContactsByGroup(ctxt, groupName); ArrayList<String> results = new ArrayList<String>(); if (contacts != null) { try { while (contacts.moveToNext()) { List<String> res = getCSipPhonesContact(ctxt, contacts.getLong(contacts .getColumnIndex(Contacts._ID))); results.addAll(res); } } catch (Exception e) { Log.e(THIS_FILE, "Error while looping on contacts", e); } finally { contacts.close(); } } return results; }
@Override public ContactInfo getContactInfo(Context context, Cursor cursor) { ContactInfo ci = new ContactInfo(); // Get values ci.displayName = cursor.getString(cursor.getColumnIndex(Contacts.DISPLAY_NAME)); ci.contactId = cursor.getLong(cursor.getColumnIndex(Contacts._ID)); ci.callerInfo.contactContentUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, ci.contactId); ci.callerInfo.photoId = cursor.getLong(cursor.getColumnIndex(Contacts.PHOTO_ID)); int photoUriColIndex = cursor.getColumnIndex(Contacts.PHOTO_ID); ci.status = cursor.getString(cursor.getColumnIndex(Contacts.CONTACT_STATUS)); ci.presence = cursor.getInt(cursor.getColumnIndex(Contacts.CONTACT_PRESENCE)); if (photoUriColIndex >= 0) { String photoUri = cursor.getString(photoUriColIndex); if (!TextUtils.isEmpty(photoUri)) { ci.callerInfo.photoUri = Uri.parse(photoUri); } } ci.hasPresence = !TextUtils.isEmpty(ci.status); return ci; }
@Override public Intent getAddContactIntent(String displayName, String csipUri) { Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT, Contacts.CONTENT_URI); intent.setType(Contacts.CONTENT_ITEM_TYPE); if (!TextUtils.isEmpty(displayName)) { intent.putExtra(Insert.NAME, displayName); } if (!TextUtils.isEmpty(csipUri)) { ArrayList<ContentValues> data = new ArrayList<ContentValues>(); ContentValues csipProto = new ContentValues(); csipProto.put(Data.MIMETYPE, CommonDataKinds.Im.CONTENT_ITEM_TYPE); csipProto.put(CommonDataKinds.Im.PROTOCOL, CommonDataKinds.Im.PROTOCOL_CUSTOM); csipProto.put(CommonDataKinds.Im.CUSTOM_PROTOCOL, SipManager.PROTOCOL_CSIP); csipProto.put(CommonDataKinds.Im.DATA, SipUri.getCanonicalSipContact(csipUri, false)); data.add(csipProto); intent.putParcelableArrayListExtra(Insert.DATA, data); } return intent; }
@Override public Bitmap getContactPhoto(Context ctxt, Uri uri, boolean hiRes, Integer defaultResource) { Bitmap img = null; InputStream s = Contacts.openContactPhotoInputStream( ctxt.getContentResolver(), uri, hiRes); img = BitmapFactory.decodeStream(s); if (img == null && defaultResource != null) { BitmapDrawable drawableBitmap = ((BitmapDrawable) ctxt.getResources().getDrawable( defaultResource)); if (drawableBitmap != null) { img = drawableBitmap.getBitmap(); } } return img; }
/** * Returns the number of contacts in contacts content provider. */ public int getContactCount() { // TODO: consider switching to a rawQuery("select count(*)...") on the database if // performance is a bottleneck. Cursor cursor = null; try { cursor = mContext.getContentResolver().query(Contacts.CONTENT_URI, ContactsDictionaryConstants.PROJECTION_ID_ONLY, null, null, null); if (null == cursor) { return 0; } return cursor.getCount(); } catch (final SQLiteException e) { Log.e(TAG, "SQLiteException in the remote Contacts process.", e); } finally { if (null != cursor) { cursor.close(); } } return 0; }
/** * Loads data within content providers to the dictionary. */ private void loadDictionaryForUriLocked(final Uri uri) { if (!PermissionsUtil.checkAllPermissionsGranted( mContext, Manifest.permission.READ_CONTACTS)) { Log.i(TAG, "No permission to read contacts. Not loading the Dictionary."); } final ArrayList<String> validNames = mContactsManager.getValidNames(uri); for (final String name : validNames) { addNameLocked(name); } if (uri.equals(Contacts.CONTENT_URI)) { // Since we were able to add content successfully, update the local // state of the manager. mContactsManager.updateLocalState(validNames); } }
public void registerObserver(final ContactsChangedListener listener) { if (!PermissionsUtil.checkAllPermissionsGranted( mContext, Manifest.permission.READ_CONTACTS)) { Log.i(TAG, "No permission to read contacts. Not registering the observer."); // do nothing if we do not have the permission to read contacts. return; } if (DebugFlags.DEBUG_ENABLED) { Log.d(TAG, "registerObserver()"); } mContactsChangedListener = listener; mContentObserver = new ContentObserver(null /* handler */) { @Override public void onChange(boolean self) { ExecutorUtils.getBackgroundExecutor(ExecutorUtils.KEYBOARD) .execute(ContactsContentObserver.this); } }; final ContentResolver contentResolver = mContext.getContentResolver(); contentResolver.registerContentObserver(Contacts.CONTENT_URI, true, mContentObserver); }
private void fillContactDataFromLookupKey(Uri lookupKeyUri, List<Recipient> recipients, Map<String, Recipient> recipientMap) { // We could use the contact id from the URI directly, but getting it from the lookup key is safer Uri contactContentUri = Contacts.lookupContact(getContext().getContentResolver(), lookupKeyUri); if (contactContentUri == null) { return; } String contactIdStr = getContactIdFromContactUri(contactContentUri); Cursor cursor = getContext().getContentResolver().query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=?", new String[] { contactIdStr }, null); if (cursor == null) { return; } fillContactDataFromCursor(cursor, recipients, recipientMap); }
private void fillContactDataFromQuery(String query, List<Recipient> recipients, Map<String, Recipient> recipientMap) { ContentResolver contentResolver = getContext().getContentResolver(); query = "%" + query + "%"; Uri queryUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI; String selection = Contacts.DISPLAY_NAME_PRIMARY + " LIKE ? " + " OR (" + Email.ADDRESS + " LIKE ? AND " + Data.MIMETYPE + " = '" + Email.CONTENT_ITEM_TYPE + "')"; String[] selectionArgs = { query, query }; Cursor cursor = contentResolver.query(queryUri, PROJECTION, selection, selectionArgs, SORT_ORDER); if (cursor == null) { return; } fillContactDataFromCursor(cursor, recipients, recipientMap); if (observerContact != null) { observerContact = new ForceLoadContentObserver(); contentResolver.registerContentObserver(queryUri, false, observerContact); } }
@Override public void onClick(View v) { if (contact.getSystemAccount() == null) { AlertDialog.Builder builder = new AlertDialog.Builder( ContactDetailsActivity.this); builder.setTitle(getString(R.string.action_add_phone_book)); builder.setMessage(getString(R.string.add_phone_book_text, contact.getJid())); builder.setNegativeButton(getString(R.string.cancel), null); builder.setPositiveButton(getString(R.string.add), addToPhonebook); builder.create().show(); } else { String[] systemAccount = contact.getSystemAccount().split("#"); long id = Long.parseLong(systemAccount[0]); Uri uri = ContactsContract.Contacts.getLookupUri(id, systemAccount[1]); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(uri); startActivity(intent); } }
private long getContactIdFromLookupUri(Context context, Uri uri) { Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, new String[] {ContactsContract.Contacts._ID}, null, null, null); if (cursor != null && cursor.moveToFirst()) { return cursor.getLong(0); } else { return -1; } } finally { if (cursor != null) cursor.close(); } }
public static Bitmap getLocalUserContactPhoto(Context context, Uri uri) { if (uri == null) return getDefaultContactPhoto(context); Bitmap contactPhoto = localUserContactPhotoCache.get(uri); if (contactPhoto == null) { Cursor cursor = context.getContentResolver().query(uri, CONTENT_URI_PROJECTION, null, null, null); if (cursor != null && cursor.moveToFirst()) { contactPhoto = getContactPhoto(context, Uri.withAppendedPath(Contacts.CONTENT_URI, cursor.getLong(0) + "")); } else { contactPhoto = getDefaultContactPhoto(context); } localUserContactPhotoCache.put(uri, contactPhoto); } return contactPhoto; }
private RecipientDetails getRecipientDetails(Context context, String number) { Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); Cursor cursor = context.getContentResolver().query(uri, CALLER_ID_PROJECTION, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { Uri contactUri = Contacts.getLookupUri(cursor.getLong(2), cursor.getString(1)); Bitmap contactPhoto = ContactPhotoFactory.getContactPhoto(context, Uri.withAppendedPath(Contacts.CONTENT_URI, cursor.getLong(2)+"")); return new RecipientDetails(cursor.getString(0), cursor.getString(3), contactUri, contactPhoto, BitmapUtil.getCircleCroppedBitmap(contactPhoto)); } } finally { if (cursor != null) cursor.close(); } return null; }
private void asyncQueryDisplayName(final Uri lookupUri) { final String DISPLAY_NAME_COL = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? Contacts.DISPLAY_NAME_PRIMARY : Contacts.DISPLAY_NAME; final String[] projection = new String[] { Contacts._ID, DISPLAY_NAME_COL, }; NotifyingAsyncQueryHandler asyncQuery = new NotifyingAsyncQueryHandler(this, this); asyncQuery.startQuery(1, lookupUri, lookupUri, projection, null, null, null); }
private Uri retrieveContactPhotoUri() { Cursor cursorID = getContentResolver().query(uriContact, new String[]{Contacts._ID}, null, null, null); String contactID = ""; if (cursorID != null && cursorID.moveToFirst()) { contactID = cursorID.getString(cursorID.getColumnIndex(Contacts._ID)); cursorID.close(); } // //// return Uri.withAppendedPath(Contacts.CONTENT_URI,contactID); // return ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(contactID)); Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI,new Long(contactID)); Uri photoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY); return photoUri; }
public final void a(String paramString1, String paramString2, jjd paramjjd) { if (getIntent().getBooleanExtra("picker_mode", false)) { Intent localIntent1 = new Intent(); localIntent1.putExtra("person_id", paramString1); localIntent1.putExtra("person_data", paramjjd); setResult(-1, localIntent1); finish(); return; } if (paramString2 != null) { Intent localIntent2 = new Intent("android.intent.action.VIEW", Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, paramString2)); localIntent2.addFlags(524288); startActivity(localIntent2); return; } startActivity(efj.b(this, this.d.c(), paramString1, null, false)); }