免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

android通讯录开发完整代码

Android通讯录是一款用于管理联系人信息的应用程序,主要功能包括新增、编辑、删除联系人,以及搜索联系人等。本文将介绍Android通讯录的开发原理及完整代码。

1.开发原理

Android通讯录的开发主要涉及以下几个方面:

1)联系人数据的存储:Android通讯录的联系人数据存储在系统提供的Content Provider中,开发者可以通过Content Provider提供的API进行数据的操作。

2)联系人数据的展示:开发者可以通过ListView或RecyclerView等控件展示联系人数据,并通过Adapter将数据与控件进行绑定。

3)联系人数据的操作:开发者可以通过对ListView或RecyclerView的Item进行点击事件监听,实现对联系人数据的操作,包括新增、编辑、删除等。

2.完整代码

下面是Android通讯录的完整代码,包括联系人数据的展示和操作:

1)布局文件activity_main.xml

```

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/listView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

android:id="@+id/addBtn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="新增"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true"

android:layout_marginRight="20dp"

android:layout_marginBottom="20dp" />

```

2)联系人数据的展示MainActivity.java

```

public class MainActivity extends AppCompatActivity {

private ListView mListView;

private Button mAddBtn;

private List mContactList;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mListView = findViewById(R.id.listView);

mAddBtn = findViewById(R.id.addBtn);

mContactList = new ArrayList<>();

//获取联系人数据

getContacts();

//设置ListView的Adapter

mListView.setAdapter(new ContactAdapter(this, mContactList));

//新增联系人

mAddBtn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);

startActivity(intent);

}

});

}

//获取联系人数据

private void getContacts() {

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

if (cursor != null) {

while (cursor.moveToNext()) {

Contact contact = new Contact();

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

String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

contact.setId(id);

contact.setName(name);

mContactList.add(contact);

}

cursor.close();

}

}

}

```

3)联系人数据的操作ContactAdapter.java

```

public class ContactAdapter extends BaseAdapter {

private Context mContext;

private List mContactList;

public ContactAdapter(Context context, List contactList) {

mContext = context;

mContactList = contactList;

}

@Override

public int getCount() {

return mContactList.size();

}

@Override

public Object getItem(int position) {

return mContactList.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

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

ViewHolder holder;

if (convertView == null) {

convertView = LayoutInflater.from(mContext).inflate(R.layout.item_contact, parent, false);

holder = new ViewHolder();

holder.nameTv = convertView.findViewById(R.id.nameTv);

holder.editBtn = convertView.findViewById(R.id.editBtn);

holder.deleteBtn = convertView.findViewById(R.id.deleteBtn);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

final Contact contact = mContactList.get(position);

holder.nameTv.setText(contact.getName());

//编辑联系人

holder.editBtn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_EDIT);

intent.setData(Uri.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + contact.getId()));

mContext.startActivity(intent);

}

});

//删除联系人

holder.deleteBtn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, contact.getId());

mContext.getContentResolver().delete(uri, null, null);

mContactList.remove(position);

notifyDataSetChanged();

}

});

return convertView;

}

private static class ViewHolder {

TextView nameTv;

Button editBtn;

Button deleteBtn;

}

}

```

4)联系人数据的实体类Contact.java

```

public class Contact {

private String id;

private String name;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

```

以上就是Android通讯录的完整代码,通过这个例子,我们可以了解到Android通讯录的开发原理及相关操作。


相关知识:
ios 开发私活
iOS开发私活是指开发人员为自己或他人完成iOS应用程序开发的工作。这种类型的工作通常由个人或小团队完成,目的是为了获得额外的收入或提高技能水平。在这篇文章中,我将介绍iOS开发私活的原理以及如何开始进行iOS开发私活。原理iOS开发私活的原理很简单,就是
2023-04-06
ios 开发 app 列表控制器
在iOS开发中,列表是一种非常常见的UI控件,用于展示大量数据,比如联系人列表、新闻列表、商品列表等等。在iOS中,列表控制器(Table View Controller)是一种专门用于展示列表数据的控制器,它可以帮助我们快速地创建一个列表,并提供了一些默
2023-04-06
苹果系统文件打包
苹果系统文件打包是指将多个文件或文件夹打包成一个文件,以方便传输、备份或存储。在苹果系统中,打包文件的常用格式是zip和tar。1. zip格式打包zip格式是一种常见的压缩格式,可以将多个文件或文件夹压缩成一个文件。在苹果系统中,可以通过终端或Finde
2023-04-06
打包APK
打包APK是指将Android应用程序打包成APK(Android Package)文件,以便在Android设备上安装和运行。APK文件是Android应用程序的标准格式,它包含应用程序的所有代码、资源、配置文件和其他文件。在本文中,我们将介绍打包APK
2023-04-06
ios免签隐藏头部网址
在iOS中,我们经常需要安装一些第三方应用,但是由于iOS系统的限制,这些应用必须经过苹果官方的审核才能上架App Store。因此,一些开发者会选择通过“免签”方式来发布应用,即通过特定途径安装应用,而不需要通过App Store下载。不过,在使用免签方
2023-04-06
apk签名工具
APK签名工具是一种用于对Android应用程序进行数字签名的工具。数字签名是一种基于公钥加密的安全机制,它可以确保应用程序的完整性和真实性,防止应用程序被篡改或伪造。在发布Android应用程序之前,必须对应用程序进行数字签名,否则应用程序将无法被安装在
2023-04-06
cordava打包app
Cordova是一款跨平台的移动应用开发框架,它允许开发者使用HTML、CSS、JavaScript等Web技术来构建移动应用程序。Cordova可以将开发者编写的Web应用程序打包成原生应用程序,从而可以在iOS、Android、Windows Phon
2023-04-06
中崎微型打印机 app
中崎微型打印机是一款小巧便携的热敏打印机,可以通过手机APP进行控制和使用。它的特点是体积小、重量轻、便于携带,同时具有高速、高清晰度的打印效果,非常适合在移动办公、物流配送、餐饮零售等领域使用。中崎微型打印机的APP主要提供了以下功能:1. 打印文字和图
2023-04-06
apk制作器
APK制作器是一种用于制作安卓应用程序的工具,它可以帮助开发者将代码、资源和其他必要的文件打包成一个安装包(APK),并上传到Google Play Store等应用商店进行发布。APK制作器的原理主要分为以下几个步骤:1. 编写代码:开发者需要使用Jav
2023-04-06
ipa市场
IPA市场是指苹果公司的iOS应用商店,也被称为App Store。它是苹果公司为其移动设备用户提供的在线应用程序商店,用户可以从中下载各种应用程序,包括游戏、社交媒体、工具、娱乐和教育等应用程序。IPA市场是移动应用市场中最大的一部分之一,截至2021年
2023-04-06
ios打包浏览器版
iOS打包浏览器版是指将网页应用打包成一个iOS应用,用户可以在iOS设备上使用。这种打包方式又称为Hybrid应用,是将Web技术和原生应用技术结合的一种应用方式,可以兼顾Web应用的灵活性和原生应用的性能。iOS打包浏览器版的原理是利用iOS的UIWe
2023-04-06
越狱ipa网站
越狱IPA网站是提供iOS设备用户下载越狱应用程序的网站。在iOS系统中,由于苹果公司的限制,用户只能从官方应用商店下载和安装应用程序。而越狱则可以突破这个限制,让用户可以自由地安装第三方应用程序和插件。越狱IPA网站就是为了方便用户下载越狱应用程序而存在
2023-04-06