使用android将SQLite数据库字段导出到vcf文件

时间:2014-11-22 17:23:13

标签: android sqlite vcf

我开发了一个Android应用程序,其中包含名称,电话号码和电子邮件等字段,这些字段存储在SQLite数据库中。我将此字段导出到vcf文件,但所有字段都进入单一联系,而不是生成不同的联系人。

package com.fazlu.addressbook;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Locale;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class exportcontact extends Activity {


        ListView listofcontacts;
        ContactAdapter contactAdapter;
        ArrayList<ContentValues> contactlist;
        DBModel db;
        FileWriter fw;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            listofcontacts = (ListView)findViewById(R.id.listofcontacts);
            db = DBModel.getInstance(this);
            contactlist = db.getAllContactData();

            String root = Environment.getExternalStorageDirectory().toString();

            File vcfFile = new File(root, "generated.vcf");
            try
            {
              fw = new FileWriter(vcfFile);

            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
            for(int i=0;i<contactlist.size();i++)
            {    
                ContentValues person = contactlist.get(i);
                person.getAsString("contact_id");
                person.getAsString("contact_name");
                person.getAsString("contact_number");
                person.getAsString("contact_address");
                person.getAsString("contact_email");


              try{

                fw.write("BEGIN:VCARD\r\n");
                fw.write("VERSION:3.0\r\n");
                fw.write("FN:" + person.getAsString("contact_name") + "\r\n");

                fw.write("TEL;TYPE=WORK,VOICE:" +   person.getAsString("contact_number") + "\r\n");

                fw.write("ADR;TYPE=WORK:;;" +person.getAsString("contact_address") + ";" + "" + ";" +"" + ";" + "" + ";" + "" + "\r\n");
                fw.write("EMAIL;TYPE=PREF,INTERNET:" +person.getAsString("contact_email") + "\r\n");

                fw.write("END:VCARD\r\n");

                Log.d("contact name",person.getAsString("contact_name"));
                 fw.write("END:VCARD\r\n");


                    if(contactlist.size()-1 == i)
                    {
                         fw.close();

                    }
                }
              catch(IOException e){
                  e.printStackTrace();
              }

            }       
        }
}

1 个答案:

答案 0 :(得分:0)

 protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            listofcontacts = (ListView)findViewById(R.id.listofcontacts);
            db = DBModel.getInstance(this);
            contactlist = db.getAllContactData();

            String root = Environment.getExternalStorageDirectory().toString();

            File vcfFile = new File(root, "generated.vcf");
            try
            {
              fw = new FileWriter(vcfFile);


            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
            for(int i=0;i<contactlist.size();i++)
            {    


              try{
                  fw.write("BEGIN:VCARD\r\n");
                  fw.write("VERSION:3.0\r\n");

                ContentValues person = contactlist.get(i);

                person.getAsString("contact_id");
                person.getAsString("contact_name");
                person.getAsString("contact_number");
                person.getAsString("contact_address");
                person.getAsString("contact_email");

                fw.write("FN:" + person.getAsString("contact_name") + "\r\n");

                fw.write("TEL;TYPE=WORK,VOICE:" +   person.getAsString("contact_number") + "\r\n");

                fw.write("ADR;TYPE=WORK:;;" +person.getAsString("contact_address") + ";" + "" + ";" +"" + ";" + "" + ";" + "" + "\r\n");
                fw.write("EMAIL;TYPE=PREF,INTERNET:" +person.getAsString("contact_email") + "\r\n");



                Log.d("contact name",person.getAsString("contact_name"));
                fw.write("END:VCARD\r\n");
                if((contactlist.size()-1)==i){

                    fw.close();
                }
                  }
                catch(IOException e){
                  e.printStackTrace();
                }

            } 



        }