Android手机通讯录备份还原代码

实现方法很简单
1.把通讯录中的联系人,电话号码保存到txt文件中完成备份。
2.读取txt文件,导入到通讯录完成还原。

  具体代码
1.添加 通讯录读写权限,存储卡写权限

  <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>

  2.写文件代码

  File saveFile=new File("/sdcard/test.txt");
                FileOutputStream outStream;
try {
outStream = new FileOutputStream(saveFile);
       outStream.write(str.getBytes());
       outStream.close();
} catch (Exception e) {

  
setTitle(e.toString());
}

  3.取通讯录联系人

  str="";
       Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);  
       if (cur.moveToFirst()) {  
           int idColumn  = cur.getColumnIndex(ContactsContract.Contacts._ID);  
           int displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);  
           do {  
              String contactId = cur.getString(idColumn);  
              String disPlayName = cur.getString(displayNameColumn);  
              str+=disPlayName;
              int phoneCount = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
              if(phoneCount>0){  
                  Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + contactId, null, null);
                  int i=0;
                  String phoneNumber;
                  if(phones.moveToFirst()){  
                      do{  
                       i++;
                          phoneNumber= phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                          if(i==1)
                          str=str+","+phoneNumber;
                          System.out.println(phoneNumber);  
                      }while(phones.moveToNext());  
                  }  
              }  
              str+="\r\n";
              } while (cur.moveToNext());  
       }  
       }

  4.读文件代码

  try {
              File file = new File("/sdcard/test.txt");
            FileInputStream inStream = new FileInputStream(file);
          ByteArrayOutputStream outStream = new ByteArrayOutputStream();
          byte[] buffer = new byte[1024*5];
          int length = -1;
          while((length = inStream.read(buffer)) != -1 ){
           outStream.write(buffer, 0, length);
          }
          outStream.close();
          inStream.close();
          String txt= outStream.toString();

  
   } catch (IOException e){
             setTitle(e.toString());
         }

  
5.写通讯录

  ContentValues values = new ContentValues();
    Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
    long rawContactId = ContentUris.parseId(rawContactUri);
    values.clear();
    values.put(Data.RAW_CONTACT_ID, rawContactId);
    values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
    values.put(StructuredName.GIVEN_NAME, name);
    getContentResolver().insert(Data.CONTENT_URI, values);
     values.clear();
    values.put(Data.RAW_CONTACT_ID, rawContactId);
    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(Phone.NUMBER, num);
    values.put(Phone.TYPE, Phone.TYPE_HOME);
    getContentResolver().insert(Data.CONTENT_URI, values);

  Android手机通讯录备份还原代码下载地址

  免费下载地址在

  用户名与密码都是

  具体下载目录在 /pub/Android源码集锦/2011年/11月/Android手机通讯录备份还原代码/

时间: 2024-10-30 11:34:09

Android手机通讯录备份还原代码的相关文章

Android手机通讯录

1.概述 最近由于项目需求,需要做一个查看手机通讯录,并且取出相应的数据.类似于下图: 用到的一个主要的知识点:SectionIndexer--能够有效地帮助我们对分组进行控制,由于SectionIndexer是一个接口,你可以自定义一个子类来实现SectionIndexer, 不过自己再写一个SectionIndexer的实现太麻烦了,这里我们直接使用Android提供好 的实现AlphabetIndexer,用它来实现联系人分组功能已经足够了.AlphabetIndexer的构造函数需要传入

Android手机通讯录项目开发--联系人数据库contacts2.db介绍

项目描述:该项目为基于Android平台的手机通讯录,主要模块分为四个部分:联系人管理模块,通话记录管理模块,短信管理模块,系统设置模块. 系统结构图如下: 本项目启动时间:2014年5月28日 说明:本次开发项目的所有源码全部会分享给大家.开发此项目的目的有这几点:一.锻炼独立开发项目的能力,二.增加对Android开发的了解,三.熟悉Android通讯录机制. 闲话不多说,正式开始! 技术要点一:熟悉Android联系人数据库contacts2.db 1.获得联系人数据库contacts2.

Android手机通讯录解析

相关图片上传麻烦,原文件到我的博客上传的文件里下载. 1.通讯录应用介绍 通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的. 通讯录是ContentProvider的应用,通讯录由两部分组成: (1)com.android.providers.contacts的ContentProvider:真正存储数据的ContentProvider (2)com.android.contacts:运用ContentResolver

如何获得android手机通讯录的字母显示(两)

随后的写如何使各第一字母显示相同的分类触点: 于adapter implement SectionIndexer 这项adapter必须在下面可以实现3接口: @Override public Object[] getSections() { //section的集合 } @Override public int getPositionForSection(int section) {//当前section的位置 } @Override public int getSectionForPosit

Android手机获取通讯录联系人信息及短信广播实现

现在越来越多的android应用在注册时都要用到手机号码,通过获取手机验证码来完成注册.也有不少应用提供了手机通讯录备份功能,获得你的允许后把你的通讯录中的手机号码保存到服务器中,你要的时候又可以down下来,比如微信,QQ等就有这们的功能.那我们怎么样获取用户通讯录中的手机号码呢?Android已经为我们做好了准备: ---------------------------------获取通讯录联系人信息----------------------------------------------

Android开发之获取手机通讯录

获取手机通讯录是Android最常用的小功能,今天自学到了,记下来,主要是通过系统自带的内容提供者提供的数据,我们使用内容接收者获取相应的数据到cursor中,然后获取对应data表中的字段,相关字段代表什么含义,只能自己去查了. 下面是手机通讯录列表的代码,仅供参考: package com.andy.phonecontact; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import

手机通讯录恢复

前段时间我哥备份手机通讯录备份的是xls表格格式,然后现在导入不进去了,用各种软件都是错误.我导出为vcard的(后缀是vcf),以文本格式打开看了下,发现vcard是很有格式规范的,顿时觉得有戏了.可以尝试将excel表格转换成vcard格式,然后导入. BEGIN:VCARD N:;移动客服;;;;;; TEL;CELL:10086 STARRED:False UID:514 VERSION:3.0 REV:20140602 END:VCARD 很明显的格式,第二行就是姓名,tel那一行就是

【Android Demo】简单手机通讯录

Android 系统给我们提供了访问通讯录的接口,通过接口获取通讯录信息.Adapter 与 View 的连接主要依靠 getView 这个方法返回我们需要的自定义 view. ListView 是 Android App 中一个最最最常用的控件了,所以如何让 ListView 流畅运行,获取良好的用户体验是非常重要的. 对 ListView 优化就是对 Adapter 中的 getView 方法进行优化. 核心内容: 1.获取手机通讯录 2.数据封装 3.创建 Adapter 4.优化适配器

Android开发系列(十一):对手机通讯录的读取、添加、删除、查找

一.通讯录介绍 通讯录是Android手机自带的一个应用,它是一个ContentProvider应用,其它应用可以对通讯录进行访问,进行对联系人的CRUD操作. 二.通讯录数据库结构的介绍 首先,我们可以在File Explorer视图下找到contacts2.db文件,这是通讯录的文件 然后,我们用SQLite打开,分析下它的数据库结构: raw_contacts表: data表: mimetypes表: 这三张表的结构介绍完了,接下来我们说下它们之间的联系: raw_contacts表存放联