获取手机通讯录 (含SIM卡中的联系人)
sim卡UIR
content://icc/fdn
正题: (注:以下代码都是针对标题节选的关键代码,甚至有些不是同一文件中,详情请参考工程) 我们可以通过以下的方法取得所有联系人的表的Cursor对象: 1)ContentResolver contentResolver=getContentResolver(); 2)Cursor cursor=contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);//根据URI对象ContactsContract.Contacts.CONTENT_URI查询所有联系人; 从Cursor对象里我们关键是要取得联系人的_id。通过它,再通过ContactsContract.CommonDataKinds的各个子类查询该_id联系人的电话(ContactsContract.CommonDataKinds.Phone),email(ContactsContract.CommonDataKinds.Email)等等。 以取得该联系人所有电话为例: 1)int idFieldIndex=cursor.getColumnIndex(ContactsContract.Contacts._ID); 2)Cursor phonecursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?", new String[]{Integer.toString(id)}, null);//再类ContactsContract.CommonDataKinds.Phone中根据查询相应id联系人的所有电话; 类似地可以ContactsContract.CommonDataKinds的不同的子类查询不同的内容。android文档告诉我们推荐使用ContactsContract.Contacts.LOOKUP_KEY代替ContactsContract.Contacts._ID。 二. 几种Intent的传值应用
三. Adapter的自定义使用 四. AutoCompleteTextView应用 和 TextWatcher应用
五. AsyncTask应用(第九条有举例说明)
六. 防止手机横屏时页面重新加载
七. 通讯录联系人按拼音重排序
八startActivityForResult的用法(举例说明) 在切换界面时,原有的界面需要从新界面取得某些数据,这时需要用到startActivityForResult,比如说从activity1跳转到activity2,边看代码边说用法吧: activity1的代码片段:这是跳转到activity2 Intent intent = new Intent(Activity1.this, Activity2.class); startActivityForResult(intent, GET_CODE); Intent intent = new Intent(Activity1.this, Activity2.class); startActivityForResult(intent, GET_CODE); 这里的GET_CODE是int型,值随意定,用途在后面讲 activity2的代码片段,这是当activity2的任务完成后返回时的代码 setResult(RESULT_OK, (new Intent()).setAction("Corky!")); finish(); setResult(RESULT_OK, (new Intent()).setAction("Corky!")); finish(); 当activity2在finish之后,activity1会接收到消息,系统会调用activity1中的onActivityResult方法: protected void onActivityResult(int requestCode, int resultCode,Intent data) { if (requestCode == GET_CODE) { //do something if (resultCode == RESULT_CANCELED) { //do something } else { //do something } } } protected void onActivityResult(int requestCode, int resultCode,Intent data) { if (requestCode == GET_CODE) { //do something if (resultCode == RESULT_CANCELED) { //do something } else { //do something } } } 注意这里的GET_CODE要与上面代码中的GET_CODE对应起来,用途大概已经明白了,就是说activity1可能会跳转到很多不同的界面来获得信息,那么怎么区分呢,就用这个GET_CODE,我们这里只有一个。参数中的resultCode的值是由activity2中的setResult的第一个参数决定的,data则为可选参数,可以传递更多的信息。 九AsyncTask的使用 在android程序中一定不能阻塞UI线程,否则很容易就会弹出no respond 的对话框,导致程序退出。为了避免这种情况,一般需要较长时间执行的任务都放在线程中去执行,如从网上下载图片在界面的某个区域显示。但是使用线程回导致cpu开销过大,并且当线程管理不好时也会弹出no respond框。android提供了AsyncTask类用来处理这种情况;例如需要下载图片,然后在songImagButton中显示,下载的逻辑在songImageButton的initImage方法中。 Java代码
一般在doInBackground中执行后台的逻辑,如下载图片或其他需要耗时长的任务,onPostExecute方法用来对界面进行操作。如果后台的逻辑有返回值,则由doInBackground返回然后传入onPostExecute方法,然后更新界面。doInBackground方法和onPostExecute的参数必须对应,这两个参数在AsyncTask声明的泛型参数列表中指定,第一个为doInBackground接受的参数,第二个为显示进度的参数,第第三个为doInBackground返回和onPostExecute传入的参数。 当然我个人认为AsyncTask不能完全取代线程,在一些逻辑较为复杂或者需要在后台反复执行的逻辑就可能需要线程来实现了。 Eoe_Contact.rar(69.32 KB, 下载次数: 12) 最后再次感谢smallnews大侠提供初版。 |
- device.png(63.57 KB, 下载次数: 72)
- device2.png(60.73 KB, 下载次数: 52)
- device3.png(29.64 KB, 下载次数: 46)
获取手机通讯录 (含SIM卡中的联系人)相关推荐
- android获取手机通讯录和sim卡通讯录
获取手机通讯录 1 权限 <uses-permission android:name="android.permission.READ_CONTACTS"/> 注意6. ...
- android sim卡联系人存储格式,Android获取手机通讯录、sim卡联系人及调用拨号界面方法...
android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...
- 获取手机通讯录跟sim卡通讯录
/** 获取库Phone表字段 **/ private static final String[] PHONES_PROJECTION = new String[] { Phone.DISPL ...
- android 怎样删除sim卡中的联系人
这个功能我看了不少的资料,但总是删除不成功,我是在mtk 6.0上进行开发的.首先是通过"content://icc/adn/"来进行删除的,我发现这个根本就不行, public ...
- MTK平台获取本机的SIM卡中IMSI号
要求在MTK的代码上获得本机上SIM卡的手机号码,查了很多资料后,结果是无法获得,原因是手机号码不是直接存储在SIM卡的,而是信号通过移动商(移动.联通或电信)时绑定的:IMSI是sim卡的一个属性号 ...
- MTK平台 获取本机的SIM卡中IMSI号
公司MTK平台做开发,老板要求在MTK的代码上获得本机上SIM卡的手机号码,查了很多资料后,结果是无法获得,原因是手机号码不是直接存储在SIM卡的,而是信号通过移动商(移动.联通或电信)时绑定的:IM ...
- android+已移除sim卡,如何从Android SIM卡中删除/删除/擦除联系人
作者:Selena Komez11月更新了20,2017 "我的兄弟是一个空白的经理,他在他的Android SIM卡上保存了数千个客户名称和电话号码.但是,现在为了保护客户的隐私,他需要将 ...
- android 获取sim卡信息list_提醒:手机要设置SIM卡密码!如何设置?有何用处?攻略来了...
近期,一篇标题为<一部手机失窃而揭露的窃取个人信息实现资金盗取的黑色产业链>的文章引发关注和热议,不法分子偷盗个人手机后,在某政务App窃取用户个人信息,进而申请网贷消费造成用户财产损失的 ...
- android获取机主手机号,Android中 获取手机通讯录和手机机主手机号码——诺诺涂鸦记忆...
目标:获取手机通讯录联系人的姓名和手机号码,屏幕座机和其他非手机号码,避免号码重复 (注:我只给出了代码思路和用法示例,大家可以自己调用方法debug运行看结果或者自行编写显示结果的代码,根据需要进行 ...
最新文章
- 怎么导出费用科目凭证明细_公司做账:小规模公司怎么做账?
- 硬件——STM32 , 录音
- .Net架构必备工具列表
- Second kill system learning
- Python堆叠式神经网络模型实践【Stacking策略+Keras框架】,GUI可视化应用
- clickhouse 同步mysql_腾讯大牛教你ClickHouse实时同步MySQL数据
- cad放大_如何玩转CAD看图?1分钟,一款完全免费的高效软件,解决所有看图
- 苹果电脑推出MacOSMojave10.14.5支持隔空投放2
- IAR报错:FlashK60Fxxx128K.board丢失 K60断电丢程序
- golden ticket和sliver ticket的区别是什么?
- 什么是期权股权?什么是期权股权原始股?
- # Freda的队列
- 区分Internet和Local数据流的Qos实现
- Java 的守护线程是什么情况?
- dell灵越笔记本后盖怎么拆_戴尔灵越5000笔记本拆解 内部做工相当出众
- Java后端入行看这 做软件园最靓的仔
- 何为SourceMap?
- SSM框架下实现验证码图片验证功能(源码)
- Vue监听器的基本使用(监听属性-深度监听和立即执行)
- Go 打印结构体(struct)信息:fmt.Printf(“%+v“, user)
热门文章
- UVA1220 Hali-Bula的晚会 Party at Hali-Bula
- 打印机:墨粉盒(墨粉筒) 、硒鼓
- 十分钟学会win10系统封装之系列教程(一):在VMware Workstation虚拟机上安装win10母盘系统
- Bluez移植到mini2440 .
- 大数据技术之HBase(超级详细)
- STM32入门笔记(02):MPU6050、MPU9250、ICM20948及姿态解算(SPL库函数版)
- canvas画田字格与米字格
- catalog英文翻译_“目录”的英文翻译是“catalog还是contents
- 爬虫——模拟传智播客教辅平台登录
- 【map排序 遍历】