我开发了一个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();
}
}
}
}
答案 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();
}
}
}