[存档]获取通讯录信息并写到SD卡上

 

下面是代码,不过没有字母表的顺序排列:

package com.example.getcontacts;

import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.text.TextUtils;
import android.widget.Toast;

public class GetContacts extends Activity {

	private Context ctx = GetContacts.this ; 
	private String filePath = Environment.getExternalStorageDirectory().getPath()+"/contacts.txt";
	private static final String[] PHONES_PROJECTION = new String[] 
	{
	    Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID,Phone.CONTACT_ID 
	};
	/**联系人显示名称**/
    private static final int PHONES_DISPLAY_NAME_INDEX = 0;
    /**电话号码**/
    private static final int PHONES_NUMBER_INDEX = 1;
    /**联系人的ID**/
    private static final int PHONES_CONTACT_ID_INDEX = 3;
    /**联系人名称**/
    private ArrayList<String> mContactsName = new ArrayList<String>();
    private ArrayList<String> mContactsNumber = new ArrayList<String>();
    
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_get_contacts);
		getPhoneContacts();
		try 
		{
			FileWriter fw = new FileWriter(Environment.getExternalStorageDirectory().getPath()+"/ContactME.txt");
			for(int k = 1 ; k < mContactsName.size() ; k++ )
			{
				String name = mContactsName.get(k) ;
				String num = mContactsNumber.get(k)+ "\r\n" ; 
				fw.write( name + num );
			}
			fw.flush();
			Toast.makeText(ctx, "asdasd", Toast.LENGTH_SHORT).show();
		} catch (IOException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void getPhoneContacts() 
	{
//		ContentResolver resolver = context.getContentResolver();
//		 获取手机联系人
		Cursor phoneCursor = getContentResolver().query(Phone.CONTENT_URI,PHONES_PROJECTION, null, null, null);
		if (phoneCursor != null) {
		    while (phoneCursor.moveToNext()) {
			//得到手机号码
			String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);
			//当手机号码为空的或者为空字段 跳过当前循环
			if (TextUtils.isEmpty(phoneNumber))
			    continue;
			//得到联系人名称
			String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX);
			mContactsName.add(contactName);
			mContactsNumber.add(phoneNumber);
		    }
		    phoneCursor.close();
		}
	 }
	
}

  别忘了权限:

 

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

 

 

转载于:https://www.cnblogs.com/larrylawrence/p/3460425.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值