Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 477|回复: 0

开发交流:Android操作sim卡联系人信息

[复制链接]

该用户从未签到

发表于 2011-10-24 09:27:25 | 显示全部楼层 |阅读模式
Android操作sim卡联系人信息

本文转载自:http://hi.baidu.com/ylczj/blog/item/9e7045cb8baab442b219a867.html

SIM的provider是IccProvider。既然是provider,就和操作Contact的provider类似的,只是有一些微小差别。
IccProvider的Uri是content://icc/and,可以通过这个Uri来操作SIM卡。当然,使用时需要转换为android的Uri对象。android中对SIM卡操作的支持很简单,具体的查询、插入、更新和删除操作,如下面的代码段:

一、查询联系人

查询时,只支持获取获取联系人,即query()函数的后面几个参数都为null(其它值不起作用)。同时,也不支持类似content://icc/and/0的查询。
public void SimQuery(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    Cursor cursor = activity.getContentResolver().query(uri, null, null,
            null, null);
    Log.d("1023", ">>>>>>" + cursor.getCount());
    while (cursor.moveToNext()) {
        String id = cursor.getString(cursor.getColumnIndex(People._ID));
        String name = cursor.getString(cursor.getColumnIndex(People.NAME));
        String phoneNumber = cursor.getString(cursor
                .getColumnIndex(People.NUMBER));
        Log.d("1023", ">>>>>>" + "_id, " + id);
        Log.d("1023", ">>>>>>" + "name, " + name);
        Log.d("1023", ">>>>>>" + "phone number, " + phoneNumber);
    }
}

二、插入联系人

插入联系人只要设置名字和电话号码就可以了,要注意的是姓名对应的是tag,而不是name。
public void SimInsert(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    ContentValues values = new ContentValues();
    values.put("tag", "Jones");
    values.put("number", "10086");
    Uri newSimContactUri = activity.getContentResolver()
            .insert(uri, values);
    Log.d("1023",
            ">>>>>>" + "new sim contact uri, "
                    + newSimContactUri.toString());
}

三、更新联系人
更新联系人要注意的是,它是以原先的姓名和电话号码来匹配要更新的联系人的,故要指定4个属性。
public void SimUpdate(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    ContentValues values = new ContentValues();
    values.put("tag", "Jones");
    values.put("number", "10086");
    values.put("newTag", "Fred");
    values.put("newNumber", "10000");
    activity.getContentResolver().update(uri, values, null, null);
}

四、删除联系人

删除联系人,同样是以名字和电话号码来匹配的,故需要在delete的where参数中指定,下面的例子演示了删除所有SIM卡内的联系人。
public void SimDelete(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    Cursor cursor = activity.getContentResolver().query(uri, null, null,
            null, null);
    Log.d("1023", ">>>>>> " + cursor.getCount());
    while (cursor.moveToNext()) {
        String name = cursor.getString(cursor.getColumnIndex(People.NAME));
        String phoneNumber = cursor.getString(cursor
                .getColumnIndex(People.NUMBER));
        String where = "tag='" + name + "'";
        where += " AND number='" + phoneNumber + "'";
        activity.getContentResolver().delete(uri, where, null);
    }
}

上面的代码段我都测过,可以放心使用。要使上面的例子成功,则需要添加到SIM卡上的联系人有不同的名字或电话号码,若是有相同的姓名和电话号,可能会带来问题,这一点我未测过。还有,要注意的是SIM卡和U盘一样容易坏,若读写次数较多,很可能会坏掉。
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 09:27:29 | 显示全部楼层

Re:开发交

兄弟,我想问下,有没有获取短信中心码的代码呢?!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 09:27:31 | 显示全部楼层

Re:开发交

你上网搜下,好像有的。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-10-24 09:27:34 | 显示全部楼层

Re:开发交

网上的都搞不定。。。太纠结了。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 09:27:37 | 显示全部楼层

Re:开发交

没办法,你是第一个吃螃蟹的人。自己想该怎么吃吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-10 19:35 , Processed in 0.373250 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表