(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"contact_id"}, null, null, null...); while(contactId.moveToNext()) { /* * 拿到contact_id接着到data表中去根据raw_contact_id获取mimetype_id.../** * "content://com.android.contacts/data"是访问data表的url * 通过id也就是contact_id去data表中找,data1, raw_contact_id.../name"); values.put("raw_contact_id", contactId); cr.insert(Uri.parse("content://com.android.contacts.../phone_v2"); values.put("raw_contact_id", contactId); cr.insert(Uri.parse("content://com.android.contacts
第二层:RawContracts层,由Data层的多条数据组合成一个完整的联系人信息。 第 三层:Contracts层,这一层主要注意与第二层的区别。...Uri uri = Uri.parse(“content://com.android.contacts/raw_contacts”); raw_contacts表 该表保存了所有创建过的手机测联系人,每个联系人占一行.../phone_v2" ); values.put("data1", "55555555555"); values.put("raw_contact_id", contact_id.../name" ); values.put("data1", "我我我我我我我"); values.put("raw_contact_id", contact_id);.../email_v2" ); values.put("data1", "wo555@555.com"); values.put("raw_contact_id", contact_id
对应着读联系人,把数据写进去,市场上的社交类应用经常会有这样的功能 向raw_contacts表中添加一个id 向data表里面添加对应的数据 获取ContentResolver对象,通过getContentResolver...ContentResolver对象的query()方法,查询raw_contacts表,得到Cursor对象 调用Cursor对象的moveToLast()方法,游标移动到最后一行 获取到最后一行记录的contact_id...cursor.moveToLast(); int lastId=cursor.getInt(0); int newId=lastId+1; //插入一个联系人...id ContentValues values=new ContentValues(); values.put("contact_id", newId);..."police1"); resolver.insert(dataUri, data1Values); Toast.makeText(this, "写联系人成功
联系人数据库 ? 联系人.png 我们关注的时三张表: 1.raw_contacts 关注一个字段contact_id ?...raw_contacts.png 2.data表和mimetype表:关注字段:mimetype_id 、raw_contact_id 、data1 ?...String contact_id = raw_contactsCursor.getString(0); if (contact_id !...new String[]{"data1", "mimetype"},//注意不是mimetype_id "raw_contact_id...更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com 你的喜欢与支持将是我最大的动力
-journal,这个文件和数据库的事务相关 联系人应用数据库的主要结构 raw_contacts 联系人表 contact_id 联系人id data数据表 raw_contact_id联系人id,...()方法,返回字段数组,打印一下 这里字段应该是data1和mimetype 调用Cursor对象的query()方法,注意写上条件,”raw_contact_id=?”...和值new String[]{id} 世面上的很多应用都是取出了联系人的信息,社交应用一般都有发送信息给对方,读取系统联系人 需要定义权限:android:name="...android.permission.READ_CONTACTS"/> 注意:如果一个账号被删除了,他不是真正的删除而是把raw_contacts表里面的contact_id写为null了,查询的时候应该加个判断是否为空.../raw_contacts"); Uri dataUri=Uri.parse("content://com.android.contacts/data"); //循环联系人表
data表,这个表中的“data1”列几乎包含了我们想要的数据,但是如何通过分类提取,第四列的代号说明了data1数据的类型,这些代号在mimetypes表中有对应的说明,要找到这些数据,又要通过raw_contact_id...raw_contacts表,我们通信录中要显示的信息必须要在这里找到对应的ID,当我们删除了联系人,data表中的数据并没有删除,只是删除了证张表contact_id变为null,而不是真的删除 ?...= null) { while (contactId.moveToNext()) { //获取contact_id的值,它对应data表中raw_contact_id...:name="android.permission.READ_SMS"/> android:name="android.permission.READ_CONTACTS..."/> 如过是Android 6.0以上的版本还要动态获取权限 获取联系人的效果图 ?
; import android.content.Context; import android.database.Cursor; import android.net.Uri; /** * 读取手机联系人...> contacts=new ArrayList>(); //循环联系人表 Cursor...cursor=resolver.query(uri, new String[]{"contact_id"}, null, null, null); while(cursor.moveToNext...()){ String id=cursor.getString(cursor.getColumnIndex("contact_id")); if(id!...//查找数据表 Cursor dataCursor=resolver.query(dataUri, new String[]{"data1","mimetype"},"raw_contact_id
code int: URI与给定组件匹配时返回的代码。必须是正数。.../databases/contacts2.db 可以看到: data1里面存储的是所有联系人的信息 data表里面的raw_contact_id 实际上是raw_contact表的contact_id..."\n\n\n=================contact_id:" + contact_id); // 根据raw_contact_id查询data表,查询data1列和mimetype_id...提示:设置手机联系人数据库的时候,哪怕我们删除了某联系人的信息,其实在数据库里信息仍然存在,只是把contact_id置为了null,这样拿到别人手机店里恢复联系人也是用这个原理 插入联系人: 1.先往...", contact_id); // 告诉数据库我们插入的数据属于哪条联系人 nameValues.put("mimetype", "vnd.android.cursor.item/
:name="android.permission.READ_CONTACTS"/> 1.实现分析: raw_contacts表中查到contact_id字段,在每个contact_id下,根据contact_id...联系人数据库 raw_contacts表关注字段contact_id data表和mimetype表:关注字段:mimetype_id 、raw_contact_id 、data1 2....= null//联系人邮箱 var phone: String? = null//联系人电话 var photo: Bitmap?...String contact_id = raw_contactsCursor.getString(0); if (contact_id !...*/ private final static String[] ICC_COLUMNS = new String[] { // N.B.: 这些列的出现顺序必须与要添加的调用在
mmssms是短信数据库, *短信数据库有短信数据库的内容提供者,联系人数据库有联系人数据库的内容提供者。拿到对应数据库的内容提供者就能够访问对应的数据库数据。...表 * contact_id:联系人id * data表:存放联系人的详细的信息,每行数据是单独的一条联系人信息 * data1:联系人的具体的信息 * raw_contact_id...:该行信息属于哪个联系人 * mimetype_id:该行信息属于什么类型 * mimetypes表:mimetype_id对应的类型的字符串 ###UriMatcher * 用于判断一条uri...android.content.ContentValues; import android.database.Cursor; import android.view.Menu; import android.view.View...//创建uri匹配器对象 static UriMatcher um = new UriMatcher(UriMatcher.NO_MATCH); //检测其他用户传入的uri与匹配器定义好的
应用场景:打开一个新的activity,在这个activity上获取数据,返回给打开它的界面 短信发送时,可以直接选择系统联系人 界面布局是一个线性布局,里面右侧选择联系人在EditText的右上,因此使用相对布局对输入框进行包裹...:minLines=”5” 我们使用hvg的屏幕进行预览 打开一个新的界面展示系统联系人,采用ListView控件实现列表,继承BaseAdapter来实现适配器,通过ContentProvider读取系统的联系人...while (cursor.moveToNext()) { String id = cursor.getString(cursor.getColumnIndex("contact_id...// 查找数据表 Cursor dataCursor = resolver.query(dataUri, null, "raw_contact_id..." android:text="发送"/> activity_select_contact.xml(联系人列表界面) <?
本期主题聚焦联系人和身份。 重要更新 Android 11 的目标之一是让手机更加 "以人为本",因为与至爱亲朋保持联系对人们而言至关重要。...Android 11 加入一些新的功能,可帮助您以同一身份使用多个设备,让您在手机上以全新的方式与他人沟通交流。...当您在一边使用设备执行任务,一边随时与他人聊天时,此功能非常方便。 △ 全新聊天窗格 显示哪些聊天被标记为优先项并显示在锁定屏幕上。...视频资源 如需要进一步了解这些 "以人为本" 的功能,我们建议您查看关于联系人的 Android 11 发布精选片段。...您对 "联系人和身份" 相关关键知识点掌握多少?欢迎加入测试,赢取限量版徽章。 知识点 Android 11 是我们持续优化用户、联系人以及聊天等重要功能的起点。
与ContentProvider一样,客户端的ContentResolver也提供了query、insert、update、delete、getType等等方法。...获取SIM卡上的联系人与之类似,不同之处要把Uri换成“content://icc/adn”。...、联系人电话表(因为有家庭电话、工作电话之分)、联系人电子邮箱表。...然而不是所有的系统数据变更都会触发广播(比如添加联系人),所以Android又提供了ContentObserver类,该类可协助处理Content数据变化的监听事件。...(不包含手机号与电子邮箱): ContactsContract.Contacts.CONTENT_URI content://com.android.contacts/contacts 联系人电话信息
这里给出如何获取URL与对应的数据库表的字段, 这里以最常用的联系人为例,其他自行google~ ①来到系统源码文件下:all-src.rar -> TeleponeProvider -> AndroidManifest.xml...: android:name="android.permission.READ_CONTACTS"/> 4)查询指定电话的联系人信息 private void queryContact..., OperationApplicationException { //使用事务添加联系人 Uri uri = Uri.parse("content://com.android.contacts...ContentProviderOperation op2 = ContentProviderOperation.newInsert(dataUri) .withValueBackReference("raw_contact_id...ContentProviderOperation op3 = ContentProviderOperation.newInsert(dataUri) .withValueBackReference("raw_contact_id
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的使用
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 联系人读取
REST API测试:与Selenium WebDriver UI测试相比,REST API测试并不难,大多数api都是GET / POST / PUT / PATCH / DELETE请求之一: GET...一旦上述应用程序部署成功并启动,就可以使用API GET请求获取联系人列表,显示在UI界面上。 1-获取联系人 当您访问应用程序的主页时,它会列出所有可用的联系人。 ?...,修改联系人,删除联系人等 2- GET Request: 一旦应用程序启动,可以使用API GET请求获取联系人列表,以便在应用程序中显示数据。...假设页面最多只能显示50个联系人,你需要点击翻页按钮查看更多联系人,但是在本地/QA环境中,当你启动一个新的应用程序时,可能没有足够的联系人来测试该显示功能;如果页面对象公开了一个方法来添加联系人,则需要调用...(editApi) .routeParam("contact_id", "T2S6kHv4cS1A") .asJson(); 我们可以使用这个API来清理测试中新建的数据
ContentResolver 类提供了与ContentProvider类相同签名的四个方法: public Uri insert(Uri uri, ContentValues values) 该方法用于往...content://cn.itcast.providers.personprovider/person"), true,//true表示只要发出通知的Uri以方法第一个参数开头都能被监听到,否侧监听uri必须与发出通知的...super(handler); } public void onChange(boolean selfChange) { //此处可以进行相应的业务处理 } } 读取联系人数据...resolver = context.getContentResolver(); Cursor cursor = resolver.query(uri, new String[] { "contact_id...Cursor dataCursor = resolver.query(datauri, new String[] { "mimetype", "data1" }, "raw_contact_id
今天的主题就是仿联系人界面。相信大家在平时都见过,就是可以实现快速索引的侧边栏。比如在美团中选择城市的界面: 美团中选择城市的界面 我们可以看到在右侧有一个支持快速索引的栏。
下面直接贴代码 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
领取专属 10元无门槛券
手把手带您无忧上云