Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android -连接的联系人照片

Android -连接的联系人照片
EN

Stack Overflow用户
提问于 2017-03-18 09:28:20
回答 1查看 88关注 0票数 1

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

如果接触照片没有照片,如何获得连接照片?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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]; 
    }

解决了

这种方法是正确的。问题出在节目的另一部分。很抱歉给您带来不便,谢谢大家。

EN

回答 1

Stack Overflow用户

发布于 2017-03-21 00:21:15

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

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

使用ContactsContract.DisplayPhoto尝试这段代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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源:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42877552

复制
相关文章
Android读取短信和联系人
读取短信和联系人经常会用到,要了解的是这是内容提供者(contentProvider)的知识点,大家都知道数据库是在data-->data 对应的包目录下,其他应用是不可以访问到的,如果有些数据要提供给其他的应用,比如通信录,其他应用想获取它的数据怎么办呢,这时内容提供者就出现了,预先写好了一些操作数据库的方法,因为方法是开发这个应用的开发者提供的,所以保证了数据库的安全操作,又能共享数据。
夜雨飘零
2020/05/06
2.6K0
Android Contacts(一)—— 读取联系人
Learn to work with the Android contacts database. Basic knowledge of accessing SQLite in Android along with using Cursors is expected. See the Android SQLite and Cursor Article for more information. Google changed the contacts database moving from 1.x to 2.0 versions of Android. This tutorial will be broken into 3 sections. First covering accessing contacts in Android 2.0. The second page will deal with accessing the contacts in Android 1.6 and before. Third we'll glue it all together with a class that abstracts specific classes for each version and a set of classes to manage the data from the contact records.
阳光岛主
2019/02/19
1K0
Android Contacts(一)—— 读取联系人
11 Weeks of Android: 联系人与身份
作者 / Android 系统 UI 高级产品经理 Stefan Frank 博士
Android 开发者
2022/09/23
7250
11 Weeks of Android: 联系人与身份
Android旋转相机拍摄的照片
前两天在做一个图片选择器的需求,其中的拍照部分要求调用系统相机拍照后允许用户逆时针旋转图片。
雪之下Perqin
2021/08/26
1.3K0
Android笔记: 获取手机联系人列表
下面直接贴代码 1.先写一个实体类,来放名字和号码 public class PhoneDto { private String name; //联系人姓名 private String telPhone; //电话号码 public String getName() { return name; } public void setNam
程思扬
2022/01/11
6250
Android笔记: 获取手机联系人列表
快速打造仿Android联系人界面
有段时间没写博客了,趁今天有空就写了一篇。今天的主题就是仿联系人界面。相信大家在平时都见过,就是可以实现快速索引的侧边栏。比如在美团中选择城市的界面:
俞其荣
2022/07/28
6490
快速打造仿Android联系人界面
Android的Wifi连接
最近在做Wifi连接的功能,在网上查找了很多资料,可用的也比较少,最后遇到很多了问题,一路走来也解决了很多问题,特此记录。
None_Ling
2019/10/29
2.6K0
Android 从相册中选择照片
在这里通过放回路径设置头像,但由于图片路径生成可能有一定延时,所以这里开一个线程等待:
圆号本昊
2021/09/24
9620
Android 从相册中选择照片
谷歌悄悄上线新应用,欲用“Switch to Android”吸引苹果用户
早在 2015 年时,苹果为方便想要从安卓转向苹果的用户,即开发推出了其首款 Android 应用——“Move to iOS”,旨在帮助用户将应用数据由 Android 迁移到 iOS。
xiangzhihong
2022/05/06
6160
谷歌悄悄上线新应用,欲用“Switch to Android”吸引苹果用户
Android高仿微信照片选择器+预览+显示照片
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49046109
Hankkin
2018/09/06
1.7K0
Android Contacts(二)—— SMS 短信 与 Contacts 联系人关联
Android 的SMS读取短信,可以获取发信人/收信人的手机号码(address),Contacts的联系人,可以过滤手机号码(address),因此SMS可以通过手机号码(address)关联到Contacts联系人
阳光岛主
2019/02/19
1.1K0
Android Contacts(二)—— SMS 短信 与 Contacts 联系人关联
Android ContentProvider之联系人数据库及操作
第一层:Data层,每种独立的数据类型占一行。具体哪些独立的数据可以占一行,可以在mimetypes这张表中找到, 原生Android的系统 一共12种,例如name,phone,email ect..
张拭心 shixinzhang
2022/11/30
9840
点击加载更多

相似问题

连接Android中的联系人和照片表

22

Android -获取联系人的Facebook照片

31

从联系人android检索照片

13

Android -无法获取联系人照片?

32

无法加载联系人照片android

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文