通讯录备份_adb备份手机通讯录 - CSDN
精华内容
参与话题
  • 通讯录中的联系人,电话号码保存到txt文件中完成备份。2.读取txt文件,导入到通讯录完成还原。  具体代码1.添加 通讯录读写权限,存储卡写权限  <uses-permission android:name="android.permission.READ_...

    实现方法很简单
    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手机通讯录备份还原代码/

    转载于:https://www.cnblogs.com/lingyi1111/p/4513405.html

    展开全文
  • 一 需求分析本设计要求完成一个基于C/S模式的通讯录备份软件,采用C/S架构,具有易用、美观的图形界面。1.1 服务器端功能要求能够验证客户身份,接收客户端的备份通讯录的请求,能够实时备份和更新客户的通讯录加密...
        

    一 需求分析

    本设计要求完成一个基于C/S模式的通讯录备份软件,采用C/S架构,具有易用、美观的图形界面。

    1.1 服务器端功能要求

    能够验证客户身份,接收客户端的备份通讯录的请求,能够实时备份和更新客户的通讯录

    加密存储每个用户的通讯录

    1.2 客户端功能要求

    能登陆连接到服务器,回应:连接成功/失败

    能备份本机通讯录

    能实时更新本机通讯录

    能查询本机通讯录

    1.3 本程序可实现功能

    客户端

    能登陆连接到服务器,回应:连接成功/失败

    能将本机通讯录备份到数据库

    能实时从数据库获取最新内容更新本机通讯录

    能查询本机通讯录

    能增加、删除并且修改本机通讯录

    服务端

    能够验证客户身份,接收客户端的备份通讯录的请求,能够实时备份和更新客户的通讯录

    加、解密用户存储的通讯录

    二 程序实现

    2.1 总体结构

    客户端首先建立一个本地文件来存储本地的通讯录数据,通过本地文件对通讯录内容进行查询操作,在数据库中进行通讯录的增添、删除以及修改操作。同时备份功能可将本地文件中的通讯录内容上传至数据库中,更新功能则是将经过增添、删除或修改后的数据库中通讯录内容更新到本地文件中。

    服务器负责验证客户端的登录账号和密码,若一致则与MySQL进行连接并回应客户端登陆成功,否则回应登陆失败。若登录成功,则服务端可响应客户端的备份请求,将本地文件中的通讯录内容经过DES加密后备份至数据库;还可响应客户端的更新要求,将数据库中通讯录的内容经过DES解密后更新至本地文件中。

    2.2 模块关系

    6607861-f1cc0024f60fe0cf.png

    参考文档和完整的文档和源码下载地址:

    https://www.write-bug.com/article/1406.html

    展开全文
  • 最近想写段android程序玩玩。 开发环境 eclipse ,android2.2 开发环境搭建 1.先安装jdk 2.下载安装eclipse 3.下载安装android sdk 4.安装eclipse插件 adt 5.配置Window &......
    
    

    最近想写段android程序玩玩。


    开发环境 eclipse ,android2.2

    开发环境搭建

    1.先安装jdk

    2.下载安装eclipse

    3.下载安装android sdk

    4.安装eclipse插件 adt

    5.配置Window > Preferences 中的android sdk路径

    6.创建AVD


    实现方法很简单
    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);







    如果你发现有什么不合理的,需要改进的地方,或者你有什么更好的实现方法邮件联系328452421@qq.com(qq常年不在线,邮件联系)朱晓 。相互交流 谢谢

    源码下载地址http://download.csdn.net/detail/xiaoxiao108/3741045

    展开全文
  • Android手机通讯录备份和恢复项目登录功能注册功能找回密码修改密码备份功能恢复功能恢复数据从服务器导出为Excel文件 登录功能 注册功能 找回密码 同注册功能 修改密码 同注册功能 备份功能 恢复功能 恢复数据...

    登录功能

    登录界面

    注册功能

    登录界面(找回密码,修改密码相同)

    找回密码

    同注册功能

    修改密码

    同注册功能

    备份功能

    备份界面

    恢复功能

    在这里插入图片描述

    恢复数据从服务器

    
    package com.example.contactcopy.RecoverFragment;
    
    import android.Manifest;
    import android.app.Activity;
    import android.app.Dialog;
    import android.content.ContentResolver;
    import android.content.ContentUris;
    import android.content.ContentValues;
    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.os.Handler;
    import android.os.Looper;
    import android.os.Message;
    import android.os.Parcelable;
    import android.provider.ContactsContract;
    import android.util.Log;
    import android.view.View;
    import android.view.Window;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.core.app.ActivityCompat;
    import androidx.core.content.ContextCompat;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.example.contactcopy.Adapter.listViewAdapter;
    import com.example.contactcopy.Entity.person;
    import com.example.contactcopy.FirstPageActivity;
    import com.example.contactcopy.R;
    import com.example.contactcopy.Util.ExcelUtil;
    import com.example.contactcopy.base.BaseFragment;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    
    public class RecoverFragment extends BaseFragment implements View.OnClickListener {
        private Button getData;
        private Button OutContract;
        private ListView listView_get;
        private TextView getQty;
        private ImageView downToExcel;
        private static List<person> Data = new ArrayList<>();
        private static final int REQUEST_EXTERNAL_STORAGE = 1;
    
        private static String[] PERMISSIONS_STORAGE = {
                "android.permission.READ_EXTERNAL_STORAGE",
                "android.permission.WRITE_EXTERNAL_STORAGE" };
        //接收id值
        String id;
        Dialog dialog;
        @Override
        public View initView() {
            View view = View.inflate(mContext, R.layout.fragment_recover, null);
            getData = (Button) view.findViewById(R.id.getData);
            downToExcel=(ImageView)view.findViewById(R.id.downToExcel);
            downToExcel.setOnClickListener(this);
            getQty=(TextView) view.findViewById(R.id.getQty);
            OutContract = (Button) view.findViewById(R.id.OutContract);
            listView_get = (ListView) view.findViewById(R.id.listview_get);
            getData.setOnClickListener(this);
            OutContract.setOnClickListener(this);
            return view;
        }
        public void showLoading(){
            dialog=new Dialog(getContext(),R.style.dialog);
            dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
            dialog.setContentView(R.layout.loading);
            dialog.setCanceledOnTouchOutside(false);
            dialog.show();
        }
    
        /**
         * 申请读写权限
         * @param activity
         */
        public static void verifyStoragePermissions(Activity activity) {
            try {
                //检测是否有写的权限
                int permission = ActivityCompat.checkSelfPermission(activity,
                        "android.permission.WRITE_EXTERNAL_STORAGE");
                if (permission != PackageManager.PERMISSION_GRANTED) {
                    // 没有写的权限,去申请写的权限,会弹出对话框
                    ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void initData() {
            super.initData();
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.getData:
                    showLoading();
                    Thread newThread = new RecoverFragment.NewThread();
                    newThread.start();
                    break;
                case R.id.OutContract:
                    if(ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_CONTACTS)!= PackageManager.PERMISSION_GRANTED){
                        ActivityCompat.requestPermissions(getActivity(),new String[] {Manifest.permission.WRITE_CONTACTS},1);
                    }else {
                        showLoading();
                        for (person p : Data) {
                            addContact(getContext(),p.getContract(), p.getNumber());
                        }
                        dialog.dismiss();
                        Toast.makeText(getContext(),"还原成功,请前去系统通讯录查看",Toast.LENGTH_LONG).show();
                    }
                    break;
                case R.id.downToExcel:
                    verifyStoragePermissions(getActivity());
                    if(Data.isEmpty()){
                        Toast.makeText(getContext(),"数据为空,请先获取数据!",Toast.LENGTH_LONG).show();
                    }else{
                        OutExcel();
                    }
                    break;
            }
        }
        /**
         * 导出为Excel文档
         */
        public void OutExcel(){
            String filePath = Environment.getExternalStorageDirectory().getPath();
            File file = new File(filePath);
            if (!file.exists()) {
                file.mkdirs();
            }
            String excelFileName = "/备份精灵.xls";
            String[] title = {"姓名","号码"};
            String sheetName = "demoSheetName";
            filePath = filePath+excelFileName;
            ExcelUtil.initExcel(filePath, title);
            ExcelUtil.writeObjListToExcel(Data, filePath, getContext());
        }
    
        /**
         * @param requestCode
         * @param permissions
         * @param grantResults
         */
        @Override
        public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){
            switch (requestCode){
                case 1:
                    if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
                        for (person p : Data) {
                            addContact(getContext(),p.getContract(), p.getNumber());
                        }
                    }else {
                        Toast.makeText(getContext(),"该权限必须打开",Toast.LENGTH_LONG).show();
                    }
                    break;
                default:
            }
        }
    
        /**
         * 接收从Activity传来的值
         *
         * @param activity
         */
        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
            id = ((FirstPageActivity) activity).getTitles();
        }
    
        public String parseJson() {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("id", id);
            return jsonObject.toString();
        }
    
        class NewThread extends Thread {
            @Override
            public void run() {
                Looper.prepare();
                final String urlPath = "http://192.168.43.81:8080/Contract/Servlet/QueryPerson";
                URL url;
                try {
                    StringBuffer sb = new StringBuffer();
                    url = new URL(urlPath);
                    String content = parseJson();
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setConnectTimeout(5000);
                    conn.setDoOutput(true);//设置允许输出
                    conn.setRequestMethod("POST");
                    conn.setRequestProperty("User-Agent", "Fiddler");
                    conn.setRequestProperty("Content-Type", "application/json");
                    OutputStream os = conn.getOutputStream();
                    os.write(content.getBytes());
                    os.close();
                    int code = conn.getResponseCode();
                    if (code == 200) {
                        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                        String responseData;
                        while ((responseData = in.readLine()) != null) {
                            sb.append(responseData);
                        }
                        if (!sb.toString().isEmpty()) {
                            //解析json
                            //Log.d("KKKKKK",sb.toString());
                            JSONObject jsonObject = JSONObject.parseObject(sb.toString());
                            JSONArray jsonArray = (JSONArray) jsonObject.get("data");
                            List<person> Datas = new ArrayList<>();
                            if (jsonArray.size() > 0) {
                                for (int i = 0; i < jsonArray.size(); i++) {
                                    JSONObject job = jsonArray.getJSONObject(i);
                                    String data1 = job.getString("contract");
                                    String data2 = job.getString("tele");
                                    person p = new person(data1,data2);
                                    Datas.add(p);
                                }
                            }
                            Bundle bundle=new Bundle();
                            bundle.putParcelableArrayList("Datas", (ArrayList<? extends Parcelable>) Datas);
                            Message msg=new Message();
                            msg.setData(bundle);
                            handlers.sendMessage(msg);
                        }else {
                            Toast.makeText(getContext(), "数据为空", Toast.LENGTH_SHORT).show();
                        }
                        in.close();
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                    dialog.dismiss();
                    Toast.makeText(getContext(),"数据为空",Toast.LENGTH_LONG).show();
                }
                Looper.loop();
            }
        }
    
        public Handler handlers = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                Bundle bundle = msg.getData();
                Data=bundle.getParcelableArrayList("Datas");
                listView_get.setAdapter(new listViewAdapter(getActivity(), Data));
                getQty.setText("联系人信息("+Data.size()+"条)");
                dialog.dismiss();
            }
        };
    
    
        /**
         * 向系统通讯录插入数据
         *
         * @param name
         * @param phoneNumber
         */
        public void addContact(Context context,String name, String phoneNumber) {
            ContentValues values = new ContentValues();
    
            // 向RawContacts.CONTENT_URI空值插入,
            // 先获取Android系统返回的rawContactId
            // 后面要基于此id插入值
            Uri rawContactUri = context.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
            long rawContactId = ContentUris.parseId(rawContactUri);
            values.clear();
    
            values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
            // 内容类型
            values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
            // 联系人名字
            values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name);
            // 向联系人URI添加联系人名字
            context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
            values.clear();
    
            values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
            values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
            // 联系人的电话号码
            values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber);
            // 电话类型
            values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
            // 向联系人电话号码URI添加电话号码
            context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
            values.clear();
        }
    }
    
    
    

    导出为Excel文件

    public class ExcelUtil {
        private static WritableFont arial14font = null;
    
        private static WritableCellFormat arial14format = null;
        private static WritableFont arial10font = null;
        private static WritableCellFormat arial10format = null;
        private static WritableFont arial12font = null;
        private static WritableCellFormat arial12format = null;
        private final static String UTF8_ENCODING = "UTF-8";
    
        /**
         * 单元格的格式设置 字体大小 颜色 对齐方式、背景颜色等...
         */
        private static void format() {
            try {
                arial14font = new WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD);
                arial14font.setColour(jxl.format.Colour.LIGHT_BLUE);
                arial14format = new WritableCellFormat(arial14font);
                arial14format.setAlignment(jxl.format.Alignment.CENTRE);
                arial14format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
                arial14format.setBackground(jxl.format.Colour.VERY_LIGHT_YELLOW);
    
                arial10font = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);
                arial10format = new WritableCellFormat(arial10font);
                arial10format.setAlignment(jxl.format.Alignment.CENTRE);
                arial10format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
                arial10format.setBackground(Colour.GRAY_25);
    
                arial12font = new WritableFont(WritableFont.ARIAL, 10);
                arial12format = new WritableCellFormat(arial12font);
                //对齐格式
                arial10format.setAlignment(jxl.format.Alignment.CENTRE);
                //设置边框
                arial12format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
    
            } catch (WriteException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 初始化Excel
         *
         * @param filePath
         * @param fileName 导出excel存放的地址(目录)
         * @param colName excel中包含的列名(可以有多个)
         */
        public static void initExcel( String fileName, String[] colName) {
            format();
            WritableWorkbook workbook = null;
            try {
                File file = new File(fileName);
                if (!file.exists()) {
                    file.createNewFile();
                }
                workbook = Workbook.createWorkbook(file);
                //设置表格的名字
                WritableSheet sheet = workbook.createSheet("账单", 0);
                //创建标题栏
                sheet.addCell((WritableCell) new Label(0, 0, fileName, arial14format));
                for (int col = 0; col < colName.length; col++) {
                    sheet.addCell(new Label(col, 0, colName[col], arial10format));
                }
                //设置行高
                sheet.setRowView(0, 340);
                workbook.write();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (workbook != null) {
                    try {
                        workbook.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        @SuppressWarnings("unchecked")
        public static <T> void writeObjListToExcel(List<T> objList, String fileName, Context c) {
            if (objList != null && objList.size() > 0) {
                WritableWorkbook writebook = null;
                InputStream in = null;
                try {
                    WorkbookSettings setEncode = new WorkbookSettings();
                    setEncode.setEncoding(UTF8_ENCODING);
                    in = new FileInputStream(new File(fileName));
                    Workbook workbook = Workbook.getWorkbook(in);
                    writebook = Workbook.createWorkbook(new File(fileName), workbook);
                    WritableSheet sheet = writebook.getSheet(0);
    
                    for (int j = 0; j < objList.size(); j++) {
                        person projectBean = (person) objList.get(j);
                        List<String> list = new ArrayList<>();
                        list.add(projectBean.getContract());
                        list.add(projectBean.getNumber());
    
                        for (int i = 0; i < list.size(); i++) {
                            sheet.addCell(new Label(i, j+1, list.get(i), arial12format));
                            if (list.get(i).length() <= 4) {
                                //设置列宽
                                sheet.setColumnView(i, list.get(i).length()+8);
                            } else {
                                //设置列宽
                                sheet.setColumnView(i, list.get(i).length()+5);
                            }
                        }
                        //设置行高
                        sheet.setRowView(j+1, 350);
                    }
    
                    writebook.write();
                    Toast.makeText(c, "导出Excel成功,请前往本地SD卡查看", Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (writebook != null) {
                        try {
                            writebook.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
    
                    }
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
    
            }
        }
    
    }
    

    项目demo下载地址: 私信拿,在审核中….

    展开全文
  • 通讯录备份还原二 package app.utils; import java.util.ArrayList; import java.util.List; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import ...
  • iPhone通讯录导入及备份方法

    千次阅读 2016-02-23 17:53:51
    方法1:把原有手机卡(SIM)上的通讯录导入iphone     iPhone手机使用手册-“通讯录”操作说明   “通讯录”让您容易地使用 iPhone 给朋友和同事打电话、发送电子邮件和发短信。您可在 iPhone 上直接添加联系人,...
  • 手机通讯录备份代码实现一和二的思路是通过 备份: while循环找到contact_id然后根据id找对应联系人所有电话和邮箱. 还原: 获取联系人列表通过for循环,一个一个插入手机通讯录 这两种方式的弊端是 备份速度太慢,查询...
  • 一般来说,智能机都是可以通过安装备份软件进行备份的,手机通过运行备份软件,不借助电脑,自己就能备份联系人,然后自己把生成的备份文件转存到u盘或者电脑里,这样就万无一失了,以后不管手机丢失或者换手机,都...
  • android手机通讯录备份还原 android手机通讯录备份还原 android手机通讯录备份还原
  • iOS 通讯录备份、恢复

    千次阅读 热门讨论 2016-01-11 15:21:25
    和相册 备份一样,公司产品备份功能有通讯录备份 功能,自然也有通讯录恢复了。iOS通讯录相关操作,iOS对通讯录的操作离不开的框架: #import #import iOS提供给我们了通讯录的相关信息,也给我们提供了简单的...
  • 刚换了新手机,然后把通讯录从其他地方导入到新手机,就发现通讯录悲剧了,重复的通讯录简直要命,手工合并显然是不可能的,也不...2. 先用微信的通讯录安全助手把通讯录备份到QQ的服务器。  3. 登录QQ号码,在QQ的面
  • 通讯录备份之后,将备份文件copy至PC上,然后将文件后缀改为.rar格式,解压之后找到contacts文件(在根文件夹里边多找几层,或者直接搜索),contacts下边有很多.vcf格式的文件,便是你备份的通讯录了,可以使用文本...
  • 7款同步备份手机通讯录工具

    千次阅读 2011-11-04 16:37:31
    为了防患于未然,当手机还在自己手上的时候,还是花个几分钟备份一下名片夹吧。  1、QQ同步助手  QQ同步助手是腾讯推出的安全好用的手机同步工具,同时支持 iPhone,Android,Nokia 等众多手机。只需要下载一个...
  • iPhone通讯录号码不见了怎么恢复

    千次阅读 2016-09-18 10:58:39
    在玩手机的时候最郁闷的就是手机突然出问题了,比如iPhone通讯录突然丢失了怎么办,电话号码不小心删除了怎么恢复。那么当我们遇到这种问题的时候,怎么能把通讯录中的号码恢复回来呢?今天,小编给大家带来一个教程...
  • foxmail邮件数据和通讯录备份恢复

    千次阅读 2015-06-13 10:25:50
    对于,foxmail 7.2版本,如果想备份恢复邮件数据和通讯录数据到另一电脑上时,你可以这样做:  假如你foxmail安装目录是D:\install\foxmails,那么你就把Data和Storage这两个文件夹备份,然后复制到你新安装的...
  • 如何备份和恢复outlook通讯录

    千次阅读 2007-04-16 08:37:00
    通讯录文件在如下目录下:Documents and Settings/username/Application Data/Microsoft/Address Book 拷贝出来进行备份恢复时复制到对应目录下 
  • 安卓手机不开机 怎么备份 联系人 短信 通话记录 1.准备 安卓常用工具adb工具包 2. 手机进入recovery模式 选择 mounts and storage mount (挂载) /data 分区 ...
  • 相信已经有很多人手握iPhone 7或者是iPhone 7 Plus感受...那么问题来了,很多人在降级的过程中出现了Bug导致苹果手机中的通讯录联系人丢失了!   这无疑使得这部分苹果使用者面临了窘境!那么有没有办法可以恢复通讯录
  • Android安卓系统通讯录、短信数据库在哪儿? 今天找到了一个帖子如下:  前几日,G7系统突然出问题,故障是卡在了开机第二屏,无法进入系统。 这可急坏我了,手机里面有大约1000个电话和近400条短信,有进半年没...
  • ZZ:http://hi.baidu.com/zhili82/blog/item/79de310fb206bfc479cbe166.html 直奔主题,手机通讯录备份有很多种方法,比如说QQ同步助手,火种通讯录,nokia pc套件,但是谁让咱喜欢Google的服务呢,那就用我们最...
1 2 3 4 5 ... 20
收藏数 4,596
精华内容 1,838
关键字:

通讯录备份