android contacts 编辑,如何在Android中的.csv文件中逐行编写contactn...

编辑.

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import android.app.Activity;

import android.content.Intent;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.provider.ContactsContract;

import android.provider.ContactsContract.CommonDataKinds.Phone;

import android.util.Log;

import android.widget.Toast;

/**

* @author Pankaj

*

*/

public class CsvSender extends Activity {

private Cursor cursor;

private boolean csv_status = false;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

createCSV();

exportCSV();

}

private void createCSV() {

CSVWriter writer = null;

try {

writer = new CSVWriter(new FileWriter(Environment.getExternalStorageDirectory().getAbsolutePath() + "/my_test_contact.csv"));

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

String displayName;

String number;

long _id;

String columns[] = new String[]{ ContactsContract.Contacts._ID,

ContactsContract.Contacts.DISPLAY_NAME };

writer.writeColumnNames(); // Write column header

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,

columns,

null,

null,

ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC");

startManagingCursor(cursor);

if(cursor.moveToFirst()) {

do {

_id = Long.parseLong(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));

displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).trim();

number = getPrimaryNumber(_id);

writer.writeNext((displayName + "/" + number).split("/"));

} while(cursor.moveToNext());

csv_status = true;

} else {

csv_status = false;

}

try {

if(writer != null)

writer.close();

} catch (IOException e) {

Log.w("Test", e.toString());

}

}// Method close.

private void exportCSV() {

if(csv_status == true) {

//CSV file is created so we need to Export that ...

final File CSVFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/my_test_contact.csv");

//Log.i("SEND EMAIL TESTING", "Email sending");

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);

emailIntent.setType("text/csv");

emailIntent .putExtra(android.content.Intent.EXTRA_SUBJECT, "Test contacts ");

emailIntent .putExtra(android.content.Intent.EXTRA_TEXT, "\n\nAdroid developer\n Pankaj");

emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + CSVFile.getAbsolutePath()));

emailIntent.setType("message/rfc822"); // Shows all application that supports SEND activity

try {

startActivity(Intent.createChooser(emailIntent, "Send mail..."));

} catch (android.content.ActivityNotFoundException ex) {

Toast.makeText(getApplicationContext(), "Email client : " + ex.toString(), Toast.LENGTH_SHORT);

}

} else {

Toast.makeText(getApplicationContext(), "Information not available to create CSV.", Toast.LENGTH_SHORT).show();

}

}

/**

* Get primary Number of requested id.

*

* @return string value of primary number.

*/

private String getPrimaryNumber(long _id) {

String primaryNumber = null;

try {

Cursor cursor = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

new String[]{Phone.NUMBER, Phone.TYPE},

ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ _id, // We need to add more selection for phone type

null,

null);

if(cursor != null) {

while(cursor.moveToNext()){

switch(cursor.getInt(cursor.getColumnIndex(Phone.TYPE))){

case Phone.TYPE_MOBILE :

primaryNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));

break;

case Phone.TYPE_HOME :

primaryNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));

break;

case Phone.TYPE_WORK :

primaryNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));

break;

case Phone.TYPE_OTHER :

}

if(primaryNumber != null)

break;

}

}

} catch (Exception e) {

Log.i("test", "Exception " + e.toString());

} finally {

if(cursor != null) {

cursor.deactivate();

cursor.close();

}

}

return primaryNumber;

}

}

这是CSVWriter类

import java.io.IOException;

import java.io.PrintWriter;

import java.io.Writer;

/**

* @author Pankaj

*

*/

public class CSVWriter {

private PrintWriter pw;

private char separator;

private char quotechar;

private char escapechar;

private String lineEnd;

/** The character used for escaping quotes. */

public static final char DEFAULT_ESCAPE_CHARACTER = '"';

/** The default separator to use if none is supplied to the constructor. */

public static final char DEFAULT_SEPARATOR = ',';

/**

* The default quote character to use if none is supplied to the

* constructor.

*/

public static final char DEFAULT_QUOTE_CHARACTER = '"';

/** The quote constant to use when you wish to suppress all quoting. */

public static final char NO_QUOTE_CHARACTER = '\u0000';

/** The escape constant to use when you wish to suppress all escaping. */

public static final char NO_ESCAPE_CHARACTER = '\u0000';

/** Default line terminator uses platform encoding. */

public static final String DEFAULT_LINE_END = "\n";

/** Default column name. */

public static final String DEFAULT_COLUMN_NAME = "Contact Name,Phone Number,";

/**

* Constructs CSVWriter using a comma for the separator.

*

* @param writer

* the writer to an underlying CSV source.

*/

public CSVWriter(Writer writer) {

this(writer, DEFAULT_SEPARATOR, DEFAULT_QUOTE_CHARACTER,

DEFAULT_ESCAPE_CHARACTER, DEFAULT_LINE_END);

}

/**

* Constructs CSVWriter with supplied separator, quote char, escape char and line ending.

*

* @param writer

* the writer to an underlying CSV source.

* @param separator

* the delimiter to use for separating entries

* @param quotechar

* the character to use for quoted elements

* @param escapechar

* the character to use for escaping quotechars or escapechars

* @param lineEnd

* the line feed terminator to use

*/

public CSVWriter(Writer writer, char separator, char quotechar, char escapechar, String lineEnd) {

this.pw = new PrintWriter(writer);

this.separator = separator;

this.quotechar = quotechar;

this.escapechar = escapechar;

this.lineEnd = lineEnd;

}

/**

* Writes the next line to the file.

*

* @param nextLine

* a string array with each comma-separated element as a separate

* entry.

*/

public void writeNext(String[] nextLine) {

if (nextLine == null)

return;

StringBuffer sb = new StringBuffer();

for (int i = 0; i < nextLine.length; i++) {

if (i != 0) {

sb.append(separator);

}

String nextElement = nextLine[i];

if (nextElement == null)

continue;

if (quotechar != NO_QUOTE_CHARACTER)

sb.append(quotechar);

for (int j = 0; j < nextElement.length(); j++) {

char nextChar = nextElement.charAt(j);

if (escapechar != NO_ESCAPE_CHARACTER && nextChar == quotechar) {

sb.append(escapechar).append(nextChar);

} else if (escapechar != NO_ESCAPE_CHARACTER && nextChar == escapechar) {

sb.append(escapechar).append(nextChar);

} else {

sb.append(nextChar);

}

}

if (quotechar != NO_QUOTE_CHARACTER)

sb.append(quotechar);

}

sb.append(lineEnd);

pw.write(sb.toString());

}

public void writeColumnNames() {

writeNext(DEFAULT_COLUMN_NAME.split(","));

}

/**

* Flush underlying stream to writer.

*

* @throws IOException if bad things happen

*/

public void flush() throws IOException {

pw.flush();

}

/**

* Close the underlying stream writer flushing any buffered content.

*

* @throws IOException if bad things happen

*

*/

public void close() throws IOException {

pw.flush();

pw.close();

}

}

并将清单的权限添加为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值