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盘一样容易坏,若读写次数较多,很可能会坏掉。

更多相关文章

  1. android 常用调用系统功能
  2. 如何有效的清除Android中无用的资源(静态代码分析)
  3. Android(安卓)之 发送短信
  4. Android下实现获取本机存储的联系人
  5. 联系人头像 android
  6. android 添加和删除快捷方式
  7. Mac端完全删除Android(安卓)Studio
  8. android 根据Bitmap bitmap 保存图片到手机上
  9. android之Notification的使用

随机推荐

  1. 如何检查时间偏移是否在夏令时?
  2. PHP源码安装出现virtual memory exhauste
  3. 当excel表格单元格的格式是日期格式非文
  4. php数字操作,高精度函数,保留计算结果小数
  5. php通过$_SERVER['HTTP_USER_AGENT&#
  6. PHP 站点相对包含,路径的问题解决方法(incl
  7. PHP:如果用户没有按下提交按钮,则Mysql回滚
  8. PHP + MySQL 实现无限分类的2种方法
  9. Laravel尝试在根文件夹中存储缓存文件
  10. 正则表达式在网络编程中的运用