Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find the max image size supported for contacts images?

background

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

the question

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.

like image 987
android developer Avatar asked Jul 24 '13 13:07

android developer


People also ask

What size should images be for Constant Contact?

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.


1 Answers

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
}
like image 157
android developer Avatar answered Sep 20 '22 10:09

android developer