从 jelly bean (4.1) 开始,android 现在支持 720x720 的联系人图像。
之前,从 ICS (4.0) 开始,Android 已支持256x256的联系人图像。
在此之前,联系人照片只有缩略图大小 - 96x96
API 中是否有任何函数可以返回联系人图像的最大尺寸?
我也希望制造商不要改变最大图像尺寸,即使他们这样做了并且我们有这样的功能,它也会返回给我们正确的尺寸。
根据此链接,获取最大尺寸的正确方法是:
@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;
}
编辑:如果我们至少使用 API 16 (4.1),则可以使用类似以下内容:
@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
}
摘自公告:
使用Android 4.1,您可以存储最大720 x 720的联系人照片,使联系人更加丰富和个性化。应用程序可以存储和检索该尺寸的联系人照片或使用所需的任何其他尺寸。 特定设备支持的最大照片尺寸可能有所不同,因此应用程序应在运行时查询内置联系人提供程序以获取当前设备的最大尺寸。
ContactsContract.DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI
。它应该返回您正在寻找的内容。
我不会为您提供 SEO,也不会为您提供 PPC。 这是完全不同的事情。 只需向我们发送您感兴趣的关键字,您的网站横幅就会立即出现在 Google 和 Bing 搜索结果中的第一名,而无需按点击付费。 让我向您展示它是如何工作的,您会对结果感到惊喜。