gpt4 book ai didi

Android - 来自连接的联系人照片

转载 作者:行者123 更新时间:2023-11-30 00:38:58 24 4
gpt4 key购买 nike

当联系人有连接时,如 Whatsapp 或 Skype,但该联系人没有照片,Whatsapp 或 Skype 照片会出现。

联系人照片没有照片怎么获取连接照片?

public byte[] getPhoto(String contactId) {
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(contactId));
Uri photoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
try
{
Cursor c = getContentResolver().query(photoUri,
new String[] {ContactsContract.Contacts.Photo.PHOTO}, null, null, null);
try {
if (c.moveToFirst()) {
final byte[] image = c.getBlob(0);
final Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
return stream.toByteArray();
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
c.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return new byte[0];
}

已解决

此方法工作正常。问题出在程序的另一部分。对于给您带来的不便,我们深表歉意,谢谢大家。

最佳答案

首先,请注意 Whatsapp 照片不会出现在您的 Contacts 应用程序中,它只会出现在 Whatsapp 应用程序中,那是因为它是专有照片本地存储在 Whatsapp 应用程序中,第三方应用程序无法访问。我不确定 Skype,但如果您确实在 Contacts 应用程序中看到照片,您应该能够通过 API 访问它。

您发布的代码访问了联系人的缩略图大小的照片,联系人可能只有高分辨率照片而没有缩略图。

使用 ContactsContract.DisplayPhoto 尝试此代码:

 public InputStream openDisplayPhoto(long photoFileId) {
Uri displayPhotoUri = ContentUris.withAppendedId(DisplayPhoto.CONTENT_URI, photoKey);
try {
AssetFileDescriptor fd = getContentResolver().openAssetFileDescriptor(
displayPhotoUri, "r");
return fd.createInputStream();
} catch (IOException e) {
return null;
}
}

此外,此代码将显示为联系人存储的所有照片,以及他们的 RawContact ID 来源:

String[] projection = new String[] { CommonDataKinds.Photo.PHOTO_FILE_ID, CommonDataKinds.Photo.PHOTO, CommonDataKinds.Photo.RAW_CONTACT_ID };
String selection = Data.MIMETYPE + "='" + CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "' AND " + Data.CONTACT_ID + "=" + contactId;
Cursor c = resolver.query(Data.CONTENT_URI, projection, selection, null, null);
while (c != null && c.moveToNext()) {
Long photoId = c.getLong(0);
boolean hasPhoto = c.isNull(1);
Long rawContactId = c.getLong(2);
Log.d(TAG, "found photo: " + photoId + ", " + rawContactId + ", " + hasPhoto);
}

关于Android - 来自连接的联系人照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42877552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com