- 浏览: 153758 次
- 性别:
- 来自: 深圳
最新评论
-
dawei1980:
请问,解压密码是多少?
Android本地APP集成Mui框架 -
牧羊之人:
Android本地APP集成Mui框架 -
还有也许:
貌似懂了一点。如果onCreate方法中创建了一个db,然后在 ...
Android线程模式(handler,thread,looper) -
chenshijun0101:
header里面怎么更改他的样式呢?急求
android Preference相关样式修改 -
qlraishui:
good
Binder机制分析【三】-service绑定Binder
联系人存储包括两个位置:SIM卡和手机上,在查找过程中要分别判断。
手机上存储位置在/data/data/com/android.providers.contacts/databases。
1 判断是否存储在手机上(CallDetailActivity)
还可以用以下几种方式搜索:
判断是否存在SIM卡上(CallDetailActivity)
打开联系人详情页面(CallDetailActivity)
拉起联系人修改或添加界面
直接拉起添加页面
查询联系人并区分存储位置
手机上存储位置在/data/data/com/android.providers.contacts/databases。
1 判断是否存储在手机上(CallDetailActivity)
Uri personUri = null; Uri phoneUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(mNumber)); Cursor phonesCursor = resolver.query(phoneUri, PHONES_PROJECTION, null, null, null); try { if (phonesCursor != null && phonesCursor.moveToFirst()) { long personId = phonesCursor.getLong(COLUMN_INDEX_ID); personUri = ContentUris.withAppendedId( Contacts.CONTENT_URI, personId); callText = getString(R.string.recentCalls_callNumber, phonesCursor.getString(COLUMN_INDEX_NAME)); mNumber = PhoneNumberUtils.formatNumber( phonesCursor.getString(COLUMN_INDEX_NUMBER)); callLabel = Phone.getDisplayLabel(this, phonesCursor.getInt(COLUMN_INDEX_TYPE), phonesCursor.getString(COLUMN_INDEX_LABEL)).toString(); } else { mNumber = PhoneNumberUtils.formatNumber(mNumber); } } finally { if (phonesCursor != null) phonesCursor.close(); }
还可以用以下几种方式搜索:
Cursor cursor = this.getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, //返回字段 ContactsContract.CommonDataKinds.Phone.NUMBER + " = '" + mNumber + "'", // null, // WHERE clause value substitution null); // Sort order.
判断是否存在SIM卡上(CallDetailActivity)
Cursor simCursor=null; String[] SIM_CONTENT_PROJECTION = new String[] { "name", "number", }; boolean hasIccCard1 = ((TelephonyManager) this .getSystemService( PhoneFactory.getServiceName(Context.TELEPHONY_SERVICE, 0))).hasIccCard(); if(hasIccCard1){ simCursor = resolver.query(EditSimCardActivity.SIM1_URI,SIM_CONTENT_PROJECTION, null, null, null); try { if (simCursor != null) { if (simCursor.moveToFirst()) { do { String tempName = simCursor.getString(0); String tempNumber = simCursor.getString(1); if (mNumber.equals(tempNumber)) { hasFoundContact=true; simContactIntent=new Intent(); simContactIntent.setClass(this, ViewSimCardContactActivity.class); simContactIntent.putExtra(EditSimCardActivity.SIM_CONTACT_NAME, tempName); simContactIntent.putExtra(EditSimCardActivity.SIM_CONTACT_NUMBER, tempNumber); simContactIntent.putExtra(EditSimCardActivity.SIM_ADDRESS, EditSimCardActivity.SIM1_ADDRESS); callText = getString(R.string.recentCalls_callNumber,tempName); mNumber = PhoneNumberUtils.formatNumber(tempNumber); break; } } while (simCursor.moveToNext()); } simCursor.close(); } } finally { if (simCursor != null) simCursor.close(); } }
打开联系人详情页面(CallDetailActivity)
if (personUri != null) { //phone Intent viewIntent = new Intent(Intent.ACTION_VIEW, personUri); actions.add(new ViewEntry(R.drawable.sym_action_view_contact, getString(R.string.menu_viewContact), viewIntent)); } else if (simContactIntent != null) { //sim actions.add(new ViewEntry(R.drawable.sym_action_view_contact, getString(R.string.menu_viewContact), simContactIntent)); } else { // none Intent createIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT); createIntent.setType(Contacts.CONTENT_ITEM_TYPE); createIntent.putExtra(Insert.PHONE, mNumber); actions.add(new ViewEntry(R.drawable.sym_action_add, getString(R.string.recentCalls_addToContact), createIntent)); }
拉起联系人修改或添加界面
//android.intent.action.INSERT_OR_EDIT Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); //vnd.android.cursor.item/contact intent.setType(Contacts.CONTENT_ITEM_TYPE); intent.putExtra(Insert.PHONE, number);
直接拉起添加页面
Intent intent = new Intent(Intent.ACTION_INSERT, Uri.withAppendedPath( Uri.parse("content://com.android.contacts"), "contacts")); intent.putExtra(Intents.Insert.PHONE, number);
查询联系人并区分存储位置
private void initDate() { // 查找所有联系人 Cursor cursor = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null); int contactIdIndex = 0; int nameIndex = 0; if (cursor.getCount() > 0) { DatabaseUtils.dumpCursor(cursor); contactIdIndex = cursor .getColumnIndex(ContactsContract.Contacts._ID); nameIndex = cursor .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); } while (cursor.moveToNext()) { String contactId = cursor.getString(contactIdIndex); String name = cursor.getString(nameIndex); /* * 查找该联系人的phone信息 */ Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null); int phoneIndex = 0; int accouttypeIndex = 0; if (phones.getCount() > 0) { DatabaseUtils.dumpCursor(phones); phoneIndex = phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); accouttypeIndex = phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); } while (phones.moveToNext()) { String phoneNumber = phones.getString(phoneIndex); int AccountType = phones.getInt(accouttypeIndex); // 1 存在手机 ;2 存在sim卡上 if(1 == AccountType){ ImportContactBean bean = new ImportContactBean(contactId, name, phoneNumber); mContactlist.add(bean); } } if (phones != null) { phones.close(); } } if (cursor != null) { cursor.close(); } }
发表评论
-
判断图片是浅色还是深色
2020-03-04 13:23 726首先需要获取 WallpaperManager.FLAG_L ... -
如何将uri转成真实路径地址
2018-10-15 17:38 1134/** * 获取文件选择器选中的文 ... -
备用网址记录
2018-01-08 11:05 400各种开源下载 http://www.mvnjar.com/ ... -
android中touch事件,click事件,longclick事件分析
2016-08-03 15:51 1441针对屏幕上的一个View控件,Android如何区分应当触发o ... -
Android 快速开发系列 打造万能的ListView GridView 适配器
2016-06-27 17:21 639前往 http://blog.csdn.net/lmj6235 ... -
android中的Handler和AsyncTask如何防止内存泄露
2016-06-13 13:55 1588Handler泄露的关键点有两个: 1). 内部类 ... -
[转载]SharedPreferences 存储java对象,很实用
2016-04-14 16:36 1017public void putObject(String ke ... -
Android本地APP集成Mui框架
2016-01-26 14:41 30472.如何在安卓原生APP中 ... -
Android与设计模式浅谈
2015-04-27 10:42 1024Android作为新一代的操作系统,集合着Google ... -
从网页启动Activity
2015-03-24 11:28 1314正好Android SDK 给我们提供了解决方案,在网页中点击 ... -
[转]android shape的使用
2014-10-13 13:30 730shape用于设定形状,可以在selector,layout等 ... -
touch事件分发处理流程
2014-05-23 09:44 794Touch 事件发生时 Activity 的 dispatch ... -
修改标准GSensor相关,是重力感应游戏在平板都可以玩
2013-12-21 11:27 814为什么有些重力感应的游戏不能玩,有些可以玩,主要原因在于fra ... -
Android模拟按键
2013-10-14 14:27 2359如果想要实现类似iphone的悬浮框按钮,那就必须知道如何去模 ... -
android资源适配解析及资源适配优先级规则
2013-10-12 12:41 36451.sw的值是怎么计算得来 ... -
[转]隐藏虚拟按键(导航栏)的方法
2013-10-12 10:35 2862Controls for system UI visibili ... -
【转】解决Android与服务器交互大容量数据问题
2013-09-02 14:40 2012对于目前的状况来说, ... -
[转载]Android大图裁剪解决办法
2013-04-25 14:29 2060cropimage 可以调用手机自带的com.android ... -
反锯齿办法
2012-12-28 14:14 915在Android中,目前,我知道有两种出现锯齿的情况。 ① ... -
android线程的那些事
2012-11-17 15:36 2263有些时候Thread里面更新UI是可以成功的。 比如在Acti ...
相关推荐
菜单功能:可通过菜单选择要使用的功能选项 添加联系人:向通讯录中添加newpeople,信息包括(姓名、性别、年龄、联系电话、家庭住址) ...先判断联系人是否存在,若存在,利用DelBase(index);进行链表的删除操作
这个联系人存在不能继续添加进通讯录里面 cmd里面显示:对不起 当前用户已经存在 同一个用户不能添加多次 如果不存在 将当前联系人添加进集合里面 cmd里面显示:添加成功 删除联系人 如果用户选择的是D: ...
设计一个通讯录管理系统,每条记录包括:联系...需要判断新添加的记录是否存在,若存在终止该操作。 5、删除指定记录。通过查询功能,找到要删除的记录。在删除记录前显示是否要删除的提示。 6、退出通讯录管理系统。
判断文件是否存在,不存在则判断是否创建成功 createOrExistsFile 判断文件是否存在,存在则在创建之前删除 createFileByDeleteOldFile 复制目录 copyDir 复制文件 copyFile 移动目录 moveDir 移动文件 moveFile ...
iOS8下,addressBook对象转OC对象。iOS9使用CNContact 支持读取/写入多种联系人属性。 目前的缺陷:每次写入都新建一个新的联系人,不能判断要写入的联系人是否已经存在。
注册时判断手机号码是否已...3.分别将“备份和恢复手机联系人”、“备份和恢复短信”(短信备份与恢复为选作)的功能加进去(通过服务器端将数据备份到MySQL数据库,恢复也是通过服务器端将数据从数据库写回手机端)。
修改联系人:提示用户输入要进行修改操作的联系人的信息,如果在文件中有该联系人存在,则将该电话号码所对应的姓名、电话号码、简介以及得票数所对应文件中加以修改。由系统提示是否继续进行修改操作,让用户可多次...
修改联系人:提示用户输入要进行修改操作的联系人的信息,如果在文件中有该联系人存在,则将该电话号码所对应的姓名、电话号码、简介以及得票数所对应文件中加以修改。由系统提示是否继续进行修改操作,让用户可多次...
自动高亮显示电话号码 该分机将更新页面上的所有电话号码,并具有拨号功能。 必需:用于接收拨号事件的...================================================== =====(**官方不支持Google联系人。) 支持语言:English
疲劳检测部分,使用Dlib进行人脸关键点检测,然后通过计算眼睛和嘴巴的开合程度来判断是存在否闭眼或者打哈欠,并使用Perclos模型计算疲劳程度。 分心行为检测部分,使用Yolov5,检测是否存在玩手机、抽烟、喝水这...
成单项履约义务的判断存在差异。审核后,对于客户约定生产线产成品指标保证值的项目, 考虑发行人需对生产线产出效果进行保证,将该类生产线合同识别为一项履约义务;对于未 具体约定生产线产成品指标保证值的生产线...
while(i) /*查询该编号是否已经存在,若存在则要求重新输入一个未被占用的编号*/ { if(strcmp(temp[i].num,num)==0) { flag=1; break; } i++; } if(flag==1) /*提示用户是否重新输入*/ { getchar(); ...
本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如...
用户登录通过判断,合法登录后可以在聊天室留下你想说的话。 5.2.2系统的功能特点 1).操作简单、界面简洁:完全控件式的页面布局 2).即时可见:对用户的留言将立即在主页的对应栏目显示出来,达到"即时见效"的功能...
通过提供完善的网上聊天系统服务,可以达到增进彼此之间的了解,增进人与人之间的感情交流。 2) 系统功能简介: 此系统是以用户为中心的人性化设计,总体来看,系统可以看作是用户模块和注册模块两大模块的协调运作...
通过提供完善的网上聊天系统服务,可以达到增进彼此之间的了解,增进人与人之间的感情交流。 2) 系统功能简介: 此系统是以用户为中心的人性化设计,总体来看,系统可以看作是用户模块和注册模块两大模块的协调运作...
查询的时候无非就是先遍历商家信息,通过goodsId判断shopCar2表中是否存在这个商家的信息,然后就是拼接格式。 demo中实现了商品 ,-,删除等功能,都是通过kvo去绑定商品数量的变化然后更新相应的视图。后期将会...
后者的依据是人工智能不具有生命特征,无法融入生物圈从 而和自然发生联系,只能作为人类活动的工具而存在。我更偏向于第二种观点,是基于 以下几个原因: 3.1 缺乏创造性的"特长生" 人工智能开发出的机器可能是某一...
本文对智能机器人的现状和发展趋势进行了综述,分析了国内外的智能机器人的发展,讨论了智能机器人在发展中存在的问题,最后提出了对智能机器人发展的一些设想。 2 国内外在该领域的发展现状综述 2.1 智能机器人的...
2、各功能简单明了 支持短信、联系人、通话记录、微信、QQ等常见应用的数据导出查看及一键恢复,只要相关碎片存在即可完全恢复出删除的数据。 3、可手动选择数据文件及导出明文备份 人性化提供手动选择应用文件查看...