获取手机通讯录源码(通讯录源码搭建教程)

今天给各位分享获取手机通讯录源码的知识,其中也会对通讯录源码搭建教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

c++通讯录源码

//通讯录系统,每条记录由姓名、qq、电话号码组成

//用结构体数组实现,可以自动扩充存储区

//多给点财富吧

#includestdio.h

#includestdlib.h

#includestring.h

#define N 60

#define BufLen 1024

typedef struct tagRecord

{

char name[N];

char qq[N];

char tel[N];

}Record,*PtRecord;

typedef enum tagType

{

ByName=1,

ByQQ,

ByTel,

}Type;

typedef enum tagMenu

{

Quit=0,

Add,

Del,

Find,

Output,

OutputAll,

}Menu;

void processmenu(Menu m);

void init();

void begin();

void myrealloc(int reserved);

int add();

void del(int n);

int find(char *v,Type t);

void output(int n);

void outputall();

const int MinCapacity=16;

int count,capacity;

char temp[BufLen]={'\0'},temp2[BufLen]={'\0'},quit[]="quit";

PtRecord ptr;

int main()

{

begin();

system("PAUSE");

return EXIT_SUCCESS;

}

//处理菜单

void processmenu(Menu m)

{

//无法处理wfchl

int t,wfchl=0;

switch(m)

{

case Quit:

if(ptr)

{

free(ptr);

}

exit(0);

break;

case Add:

add();

break;

case Del:

printf("请输入要删除的是第几个记录:");

scanf("%d",t);

del(t-1);

break;

case Find:

printf("子菜单:\n1、按姓名查找\n2、按qq号码查找\n3、按电话号码查找\n请选择一个:");

scanf("%d",t);

switch(t)

{

case ByName:

strcpy(temp2,"不存在姓名为");

printf("请输入要查找的记录的姓名:");

break;

case ByQQ:

strcpy(temp2,"不存在qq号码为");

printf("请输入要查找的记录的qq号码:");

break;

case ByTel:

strcpy(temp2,"不存在电话号码为");

printf("请输入要查找的记录的电话号码:");

break;

default:

printf("无法处理的子菜单命令。\n");

wfchl=1;

break;

}

if(!wfchl)

{

scanf("%s",temp);

t=find(temp,(Type)t);

if(-1==t)

{

strcat(temp2,temp);

strcat(temp2,"的记录。");

printf("%s\n",temp2);

}

else

{

output(t);

}

}

break;

case Output:

printf("请输入要输出第几个记录的信息:");

scanf("%d",t);

output(t-1);

break;

case OutputAll:

outputall();

break;

default:

printf("无法处理的菜单命令。\n");

break;

}

}

void init()

{

count=0;

capacity=MinCapacity;

ptr=(PtRecord)calloc(MinCapacity,sizeof(Record));

printf("初始化通讯录。\n");

while(add());

}

void begin()

{

Menu m;

char menuinfor[BufLen]={'\0'};

sprintf(menuinfor,

"菜单:\n%d、退出\n%d、添加记录\n%d、删除记录\n%d、查找记录\n%d、输出某个记录\n%d、输出所有记录\n请选择一个菜单:",

Quit,Add,Del,Find,Output,OutputAll);

init();

while(1)

{

printf("%s",menuinfor);

scanf("%d",m);

processmenu(m);

}

}

//自动增长通讯录的容量,参数reserved表示是否要保留原有数据

//1表示保留,0表示不保留

void myrealloc(int reserved)

{

int i,c=count+1;

PtRecord tempptr;

if(c=capacity)

{

tempptr=(PtRecord)calloc(2*c,sizeof(Record));

capacity=2*c;

if(reserved)

{

for(i=0;icount;i++)

{

tempptr[i]=ptr[i];

}

}

free(ptr);

ptr=tempptr;

}

}

//添加一个记录

//返回值表示本次添加操作是正常结束,还是异常结束

//返回1表示正常结束,返回0表示应用户要求终止输入

int add()

{

int r=1;

printf("添加记录。\n请输入姓名,qq,电话号码信息(以空格分隔),%s终止输入:",quit);

scanf("%s",temp);

if(strcmp(temp,quit))

{

myrealloc(1);

strcpy(ptr[count].name,temp);

scanf("%s %s",ptr[count].qq,ptr[count].tel);

printf("记录添加成功。\n");

count++;

}

else

{

r=0;

}

return r;

}

//删除下标为n的记录

void del(int n)

{

int i;

Record r;

//printf("del\n");

if(n=0 ncount)

{

r=ptr[n];

for(i=n;icount-1;i++)

{

ptr[i]=ptr[i+1];

}

printf("删除成功。\n记录[%d]:\n%s,%s,%s已删除。\n",n,r.name,r.qq,r.tel);

count--;

}

else

{

printf("删除失败。\n第%d个记录不存在。\n",n+1);

}

}

//查找类型为t,值为v的记录

//返回值为此记录在通讯录数组中的下标

//返回-1表示找不到符合要求的记录

int find(char *v,Type t)

{

int i,n=-1;

for(i=0;icount;i++)

{

switch(t)

{

case ByName:

if(!strcmp(ptr[i].name,v))

{

n=i;

}

break;

case ByQQ:

if(!strcmp(ptr[i].qq,v))

{

n=i;

}

break;

case ByTel:

if(!strcmp(ptr[i].tel,v))

{

n=i;

}

break;

default:

break;

}

if(-1!=n)

{

break;

}

}

return n;

}

//输出下标为n的记录的信息

void output(int n)

{

if(n=0 ncount)

{

printf("记录[%d]:\n%s,%s,%s。\n",n,ptr[n].name,ptr[n].qq,ptr[n].tel);

}

else

{

printf("第%d个记录不存在。\n",n+1);

}

}

//输出所有记录的信息

void outputall()

{

int i;

if(0==count)

{

printf("一个记录也没有了。\n");

}

for(i=0;icount;i++)

{

output(i);

}

}

有哪位大神有iphone通讯录源码?用UI做的

建议可以通过第三方软件微信来完成,具体方法如下:

1、在原来的手机上下载微信,安装并登录。

2、点击微信里的设置,选择通用,点击功能,再点击通讯录安全助手,选择启用,之后点击备份即可上传手机的通讯录。

3、在ipad上同样下载一个微信,登陆后照以上方法找到通讯录安全助手,进入后点击恢复即可下载并导入通讯录。

获取手机通讯录源码(通讯录源码搭建教程),获取手机通讯录源码,信息,源码,微信,第1张

Android快速获取联系人

获取联系人在Android开发中经常会遇到,最近项目需要用到获取手机联系人的功能,于是写了一个先查询联系人id然后再根据id查询手机号demo,结果慢到怀疑人生(亲测联系人数据1500+)。最后经过优化查询方式后,查询时间在200ms左右(亲测联系人数据1500+)在这里分享给大家,以方便自己好直接拿来用。国际惯例,注:以下测试只查询名字和手机号码

1、查询所有联系人

2、通过姓名获取联系人

3、通过手机号码查询联系人

最后附上源码:

Android编程,根据姓名获得手机通讯录中的电话号码

import cn.teachcourse.R;

/**

 * Created by postmaster@teachcourse.cn on 2016/5/5.

 */

public class PhoneNameActivity extends ActionBarActivity {

    private static final String TAG = PhoneNameActivity.class.getSimpleName();

    private EditText et;

    public static void start(Context context) {

        start(context, null);

    }

    public static void start(Context context, Intent extras) {

        Intent intent = new Intent();

        intent.setClass(context, PhoneNameActivity.class);

        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP

                | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        if (extras != null) {

            intent.putExtras(extras);

        }

        context.startActivity(intent);

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_phone_name);

        et = (EditText) this.findViewById(R.id.mobile);

    }

    public void getTelClick(View view) {

        String name = et.getText().toString().trim();

        number(name);

    }

    /**

     * 通过输入获取电话号码

     */

    public void number(String name) {

        //使用ContentResolver查找联系人数据

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

        //遍历查询结果,找到所需号码

        while (cursor.moveToNext()) {

            //获取联系人ID

            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

            //获取联系人的名字

            String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

            if (name.equals(contactName)) {

                //使用ContentResolver查找联系人的电话号码

                Cursor phone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);

                if (phone.moveToNext()) {

                    String phoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    Toast.makeText(this, phoneNumber+"TeachCourse——blog。。。", Toast.LENGTH_SHORT).show();

                    Log.d(TAG, "电话:" + phoneNumber);

                    break;

                }

            }

        }

    }

}

1、修改getTelClick()方法

2、修改Toast面包屑提示

3、修改获取联系人名字方法

4、位置稍微调整

跪求大神给份用Android做的手机通讯录的完整源码,能够打电话,发短信,创建等等,谢谢了。

Android通讯录管理(获取联系人、通话记录、短信消息)

用这个地址

android开发怎样获取通讯录联系人信息

在Android开发中,我经常会遇到需要获取手机通讯录联系人信息,Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息获取出来。

下面直接贴出代码供大家参考:

程序文件java代码:

import java.io.InputStream;

import java.util.ArrayList;

import android.app.ListActivity;

import android.content.ContentResolver;

import android.content.ContentUris;

import android.content.Context;

import android.content.Intent;

import android.database.Cursor;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.net.Uri;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.provider.ContactsContract.CommonDataKinds.Phone;

import android.provider.ContactsContract.CommonDataKinds.Photo;

import android.text.TextUtils;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.AdapterView.OnItemClickListener;

public class ContactsActivity extends ListActivity {

Context mContext = null;

/**获取库Phon表字段**/

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_PHOTO_ID_INDEX = 2;

/**联系人的ID**/

private static final int PHONES_CONTACT_ID_INDEX = 3;

/**联系人名称**/

private ArrayListString mContactsName = new ArrayListString();

/**联系人头像**/

private ArrayListString mContactsNumber = new ArrayListString();

/**联系人头像**/

private ArrayListBitmap mContactsPhonto = new ArrayListBitmap();

ListView mListView = null;

MyListAdapter myAdapter = null;

@Override

public void onCreate(Bundle savedInstanceState) {

mContext = this;

mListView = this.getListView();

/**得到手机通讯录联系人信息**/

getPhoneContacts();

myAdapter = new MyListAdapter(this);

setListAdapter(myAdapter);

mListView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView? adapterView, View view,

int position, long id) {

//调用系统方法拨打电话

Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri

.parse("tel:" + mContactsNumber.get(position)));

startActivity(dialIntent);

}

});

super.onCreate(savedInstanceState);

}

/**得到手机通讯录联系人信息**/

private void getPhoneContacts() {

ContentResolver resolver = mContext.getContentResolver();

// 获取手机联系人

Cursor phoneCursor = resolver.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);

//得到联系人ID

Long contactid = phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);

//得到联系人头像ID

Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);

//得到联系人头像Bitamp

Bitmap contactPhoto = null;

//photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的

if(photoid 0 ) {

Uri uri =ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);

InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(resolver, uri);

contactPhoto = BitmapFactory.decodeStream(input);

}else {

contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.contact_photo);

}

mContactsName.add(contactName);

mContactsNumber.add(phoneNumber);

mContactsPhonto.add(contactPhoto);

}

phoneCursor.close();

}

}

/**得到手机SIM卡联系人人信息**/

private void getSIMContacts() {

ContentResolver resolver = mContext.getContentResolver();

// 获取Sims卡联系人

Uri uri = Uri.parse("content://icc/adn");

Cursor phoneCursor = resolver.query(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);

//Sim卡中没有联系人头像

mContactsName.add(contactName);

mContactsNumber.add(phoneNumber);

}

phoneCursor.close();

}

}

class MyListAdapter extends BaseAdapter {

public MyListAdapter(Context context) {

mContext = context;

}

public int getCount() {

//设置绘制数量

return mContactsName.size();

}

@Override

public boolean areAllItemsEnabled() {

return false;

}

public Object getItem(int position) {

return position;

}

public long getItemId(int position) {

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

ImageView iamge = null;

TextView title = null;

TextView text = null;

if (convertView == null) {

convertView = LayoutInflater.from(mContext).inflate(

R.layout.colorlist, null);

iamge = (ImageView) convertView.findViewById(R.id.color_image);

title = (TextView) convertView.findViewById(R.id.color_title);

text = (TextView) convertView.findViewById(R.id.color_text);

}

//绘制联系人名称

title.setText(mContactsName.get(position));

//绘制联系人号码

text.setText(mContactsNumber.get(position));

//绘制联系人头像

iamge.setImageBitmap(mContactsPhonto.get(position));

return convertView;

}

}

}

关于获取手机通讯录源码和通讯录源码搭建教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

1、本网站名称:源码村资源网
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » 获取手机通讯录源码(通讯录源码搭建教程)

1 评论

您需要 登录账户 后才能发表评论