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

转自:http://hi.baidu.com/huaxinchang/blog/item/8fcf3ea2ad749ebbcaefd074.html

更多相关文章

  1. Android(安卓)操作SQLite数据库(初步)-在程序中删除数据库
  2. Android抓屏源码
  3. Android(安卓)手机录音功能实现
  4. android SpannableString使用详解
  5. android获得手机联系人信息代码
  6. android访问电话号码和电子邮箱
  7. 获取android所有联系人信息
  8. android SQLite查询
  9. Android(安卓)代码监控apk安装,卸载,替换

随机推荐

  1. PHP如何下载远程文件到指定目录
  2. PHP执行Linux命令的两个有用的函数exec和
  3. php中关于isset()、isnull()和empty()的
  4. php实现利用expat方式解析xml文件
  5. curl提交json数据的方法
  6. 超简单的Mac下搭建PHP环境教程
  7. 利用webhook使php项目自动部署
  8. PHP生命周期及fpm的运作方式
  9. 详解PHP的self关键字
  10. php通过反射修改Exception实例的message