package net.bradmont.openmpd.helpers;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.provider.Contacts;
import net.bradmont.openmpd.helpers.Log;
public class PhoneInterface {
public static Uri getContactPhotoByPhoneNumber(Context context,
String phoneNumber){
phoneNumber = phoneNumber.replaceAll("[^\\d.]", "");
if (phoneNumber.length() == 0){
return null;
}
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
Cursor cur = context.getContentResolver()
.query(uri, new String[]{BaseColumns._ID, PhoneLookup._ID, PhoneLookup.PHOTO_ID}, null, null, null);
if (cur == null){
return null;
}
if (cur.getCount() > 0){
cur.moveToFirst();
while (!cur.isAfterLast()){
Uri photo = getContactPhotoByContactId(context, cur.getLong(1));
if (photo != null){
cur.close();
return photo;
}
}
} else {
cur.close();
return null;
}
return null;
}
public static Uri getContactPhotoByContactId(Context context, long id){
try {
Cursor cur = context.getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
null,
ContactsContract.Data.CONTACT_ID + "=" + id + " AND "
+ ContactsContract.Data.MIMETYPE + "='"
+ ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null,
null);
if (cur != null) {
if (!cur.moveToFirst()) {
return null; // no photo
}
} else {
return null; // error in cursor process
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
}
}