Introduction To Android Contacts Learn to work with the Android contacts database....; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract;...getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); // 获取手机联系人...这个permission android:name="android.permission.READ_CONTACTS" /> 运行结果: ?...代码示例 参考推荐: Working With Android Contacts Android Contacts的使用
获取联系人就比较复杂了,其表结构也比较复杂,我们获取联系人的姓名、电话号码、邮箱,要通过3张表去提取 数据库所在位置data-->data中的下面路径 ?...", name='" + name + '\'' + '}'; } } 最后别忘了加上权限 android...:name="android.permission.READ_SMS"/> android:name="android.permission.READ_CONTACTS..."/> 如过是Android 6.0以上的版本还要动态获取权限 获取联系人的效果图 ?...中找到该联系人的电话号码 * 通过这个ID可以在ContactsContract.CommonDataKinds.Email.CONTENT_URI 找到该联系人的邮箱
调用系统联系人列表 Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); startActivityForResult... } 11 } 12 super.onActivityResult(requestCode, resultCode, intent); 13 } 解析联系人信息
作者 / Android 系统 UI 高级产品经理 Stefan Frank 博士 我们将为大家陆续带来 #11WeeksOfAndroid 系列内容,深入探讨 Android 的各个关键技术点,您不会错过任何重要内容...聊天快捷方式的另一种用途是在系统共享表中共享目标,Android 10 就已推出此功能。 本周的另一个要点是身份 (Identity)。...视频资源 如需要进一步了解这些 "以人为本" 的功能,我们建议您查看关于联系人的 Android 11 发布精选片段。...此外,您还可以观看 Dan 发表的关于聊天新增功能的 精彩概览演讲 和其他系统 UI 更新。最后,您还可以收听 Chet 的播客,听听他就 联系人 和 Bubble 与我们的沟通。...您对 "联系人和身份" 相关关键知识点掌握多少?欢迎加入测试,赢取限量版徽章。 知识点 Android 11 是我们持续优化用户、联系人以及聊天等重要功能的起点。
今天的主题就是仿联系人界面。相信大家在平时都见过,就是可以实现快速索引的侧边栏。比如在美团中选择城市的界面: 美团中选择城市的界面 我们可以看到在右侧有一个支持快速索引的栏。
记得在我刚接触Android的时候对系统联系人中的特效很感兴趣,它会根据手机中联系人姓氏的首字母进行分组,并在界面的最顶端始终显示一个当前的分组。...AlphabetIndexer,我们就可以通过它的getPositionForSection和getSectionForPosition方法,找出当前位置所在的分组,和当前分组所在的位置,从而实现类似于系统联系人的分组导航和挤压动画效果...我们来看一下系统联系人的raw_contacts这张表(/data/data/com.android.providers.contacts/databases/contacts2.db),这个表结构比较复杂...toUpperCase(); if (key.matches("[A-Z]")) { return key; } return "#"; } } 可以看到,在onCreate方法中,我们从系统联系人数据库中去查询联系人的姓名和排序键...系统联系人全特效实现(下),字母表快速滚动 。
在上一篇文章中,我和大家一起实现了类似于Android系统联系人的分组导航和挤压动画功能,不过既然文章名叫做《Android系统联系人全特效实现》,那么没有快速滚动功能显然是称不上"全"的。...如果还没有看过我上一篇文章,请抓紧去阅读一下 Android系统联系人全特效实现(上),分组导航和挤压动画 。...包括以前老版本的Android联系人中都是使用这种方式来进行快速滚动的。效果如下图所示: ?...; /** * 用于进行字母表分组 */ private AlphabetIndexer indexer; /** * 存储所有手机中的联系人 */ private List...当你的手指在右侧字母表上滑动时,联系人的列表也跟着相应的变动,并在屏幕中央显示一个当前的分组。 现在让我们回数一下,分组导航、挤压动画、字母表快速滚动,Android系统联系人全特效都实现了。
下面直接贴代码 1.先写一个实体类,来放名字和号码 public class PhoneDto { private String name; //联系人姓名...> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:...tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"...android:layout_width="match_parent" android:layout_height="match_parent" tools..." android:layout_height="match_parent" android:id="@+id/lv_main_list"></ListView
内容提供是实质上是个接口,后门,他给别人提供数据,系统联系人是个比较复杂的内容通过者。...-journal,这个文件和数据库的事务相关 联系人应用数据库的主要结构 raw_contacts 联系人表 contact_id 联系人id data数据表 raw_contact_id联系人id,...查询data表,把所有的数据取出来 根据数据的mimetype_id查询mimetypes表获取数据的业务类型 查询系统源代码,找到providers/Contacts相关的,先找清单文件,看到<Provider...和值new String[]{id} 世面上的很多应用都是取出了联系人的信息,社交应用一般都有发送信息给对方,读取系统联系人 需要定义权限:android:name=".../raw_contacts"); Uri dataUri=Uri.parse("content://com.android.contacts/data"); //循环联系人表
Android 的SMS读取短信,可以获取发信人/收信人的手机号码(address),Contacts的联系人,可以过滤手机号码(address),因此SMS可以通过手机号码(address)关联到...Contacts联系人 SMS - Contacts 关联代码 // 通过address手机号关联Contacts联系人的显示名字 private String getPeopleNameFromPerson...; import android.util.Log; import android.widget.ScrollView; import android.widget.TextView; public...getSmsInPhone", ex.getMessage()); } return smsBuilder.toString(); } // 通过address手机号关联Contacts联系人的显示名字...示例代码 参考推荐: Android 之 Contacts 联系人读取
具体哪些独立的数据可以占一行,可以在mimetypes这张表中找到, 原生Android的系统 一共12种,例如name,phone,email ect.....“mimetype”是电话 或者 姓名 的标示符编码: 例如:电话 对应“vnd.android.cursor.item/phone_v2” 姓名 对应“vnd.android.cursor.item/...Uri uri = Uri.parse(“content://com.android.contacts/raw_contacts”); raw_contacts表 该表保存了所有创建过的手机测联系人,每个联系人占一行...3 Uri dataUri = Uri.parse (“content://com.android.contacts/data”); data表 Ø 该表保存了所有创建过的手机测联系人的所有信息,每个字段占一行...Ø 联系人的所有信息保存在列data1至data15中,各列中保存的内容根据MimeTypeID的不同而不同。
对应着读联系人,把数据写进去,市场上的社交类应用经常会有这样的功能 向raw_contacts表中添加一个id 向data表里面添加对应的数据 获取ContentResolver对象,通过getContentResolver.../phone_v2”,”data1”=>”电话号码” 然后添加姓名,和上面一样只不过在ContentValues对象里面, Put “mimietype”=>”vnd.android.cursor.item.../raw_contacts"); Uri dataUri=Uri.parse("content://com.android.contacts/data"); //查出最后一个...cursor.moveToLast(); int lastId=cursor.getInt(0); int newId=lastId+1; //插入一个联系人..."police1"); resolver.insert(dataUri, data1Values); Toast.makeText(this, "写联系人成功
1、首先判断当前通讯录是否存在这个联系人 // 判断通讯录是否存在某个联系人 + (BOOL)isExistContactNameByName:(NSString *)contactName{...ABRecordRef people = CFArrayGetValueAtIndex(allPeople, index); //获取当前联系人名字...等待信号触发 dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); return isExist; } 2、判断是否存在这个联系人且有通讯录权限...andTitle:ydContactName andNote:ydContactNote]; } } 3、存入联系人...// 往通讯录添加一条新联系人 + (void)createAddBookRecordByPhoneArr:(NSArray *)phoneArr andTitle:(NSString *)title
-- 读取联系人权限 --> android:name="android.permission.READ_CONTACTS"/> 2、获取代码 new Thread...String linStr = ""; while (cursor.moveToNext()) { //取得联系人名字
读取联系人 新建项目ContactsTest 修改activity_main.xml: android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...; import android.Manifest; import android.content.pm.PackageManager; import android.database.Cursor;...=null){ while(cursor.moveToNext()){ //获取联系人姓名 String...ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME )); //获取联系人手机号
Outlook联系人组 22.png 23.png 24.png 25.png
对象的query()方法,得到raw_contacts表里面的数据,得到Cursor对象 参数:Uri对象,字段String数组 获取Uri对象,通过Uri.parse(“content://com.android.contacts.../data”) 循环和上面一样 姓名对应的类型是vnd.android.cursor.item/name 电话对应的类型是vnd.android.cursor.item/phone_v2 需要权限,android.permisssion.READ_CONTACTS...; import android.content.Context; import android.database.Cursor; import android.net.Uri; /** * 读取手机联系人.../raw_contacts"); Uri dataUri=Uri.parse("content://com.android.contacts/data"); List> contacts=new ArrayList>(); //循环联系人表 Cursor
React Native通讯录联系人组件,名叫:react-native-contacts,可以用来增加、读取、修改、删除、搜索手机通讯录中的联系人信息,兼容IOS和安卓双平台。...Android权限配置 在android/app/src/main/AndroidManifest.xml中增加以下权限: android:name="android.permission.READ_PROFILE..." /> android:name="android.permission.READ_CONTACTS" /> android...:name="android.permission.WRITE_CONTACTS" /> 支持的方法 ?...,getAll方法会比较慢,作者建议先获取好所有联系人,存储在本地数据库中。
#include using namespace std; constexpr auto MAX = 1000; //联系人结构体 struct Person { string...; int m_age; string m_phone; string m_address; }; //通讯录结构体 struct AddressBooks { //联系人数组...struct Person personArray[MAX]; //记录联系人个数 int m_size; }; //添加人员 void addPerson(AddressBooks...*****" << endl; cout 联系人 *****" << endl; cout 联系人 *****" << endl...; cout 联系人 *****" << endl; cout 联系人 *****" << endl; cout << "
如下,通过添加一个联系人来向大家做演示: 1、联系人对象:CNContact 这个对象是用来配置联系人信息的,有可变的CNMutaleContact和CNContact,区别用来读取和创建联系人。...,通过这些对应,系统会帮我们进行数据的格式化,例如CNLabelHome,就会将号码格式成家庭邮箱的格式,相应的其他键如下: //家庭 CONTACTS_EXTERN NSString * const ...联系人详情: ?...四、提取联系人 在开发中,提取联系人的使用率要远远高于创建联系人,ContactFramework提取联系人的方式,类似于数据库的检索方式,通过配置条件,提取出我们需要的数据,例如: ...contact, BOOL * _Nonnull stop) { NSLog(@"%@",contact); }]; 五、ContactFramework UI相关 iOS9中,系统也为我们封装好了一套联系人的
领取专属 10元无门槛券
手把手带您无忧上云