starting with jelly bean (4.1), android now supports contact images that are 720x720 .
before, starting with ICS (4.0), android has supported contact images that are 256x256.
and before that, contact photos had just a size of a thumbnail - 96x96
is there any function in the API that returns the max size of the contact image?
i also hope that the manufacturers didn't change the max image sizes, and even if they did and we have such a function, it would return us the correct size.
Most Constant Contact templates are about 600 pixels wide, so if you want an image to span the full width of your email when viewed on a desktop, we recommend using an image that's at least 600-650 pixels wide. Anything smaller could look blurry if resized to fit the email width.
according to this link, the correct way to get the max size is:
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public static int getMaxContactPhotoSize(final Context context) {
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
// Note that this URI is safe to call on the UI thread.
final Uri uri = ContactsContract.DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI;
final String[] projection = new String[] { ContactsContract.DisplayPhoto.DISPLAY_MAX_DIM };
final Cursor c = context.getContentResolver().query(uri, projection, null, null, null);
try {
c.moveToFirst();
return c.getInt(0);
} finally {
c.close();
}
}
// fallback: 96x96 is the max contact photo size for pre-ICS versions
return 96;
}
EDIT: if we use at least API 16 (4.1), it's possible to use something like:
@AnyThread
@RequiresPermission(anyOf = [Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS])
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
fun getMaxContactPhotoSize(context: Context): Int {
// Note that this URI is safe to call on the UI thread.
if (contactMaxPhotoSize > 0)
return contactMaxPhotoSize
val uri = ContactsContract.DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI
val projection = arrayOf(ContactsContract.DisplayPhoto.DISPLAY_MAX_DIM)
context.contentResolver.query(uri, projection, null, null, null)?.use { cursor ->
cursor.moveToFirst()
contactMaxPhotoSize = cursor.getInt(0)
}
if (contactMaxPhotoSize > 0)
return contactMaxPhotoSize
// fallback: 720x720 is the max contact photo size for 4.1 version
contactMaxPhotoSize = 720
return contactMaxPhotoSize
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With