免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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通讯录的开发原理及相关操作。


相关知识:
android 日历开发
Android平台提供了Calendar类和CalendarContract类,用于对日历进行操作和管理。其中,Calendar类是Android系统提供的日历操作类,而CalendarContract类是Android系统提供的日历内容提供者。1. Ca
2023-04-06
app代上架
在移动互联网时代,应用程序(App)成为了人们生活中不可或缺的一部分。为了让用户更加方便地使用App,开发者需要将自己的App上架到各大应用商店,例如苹果App Store和安卓应用市场。但是,App上架并不是一件简单的事情,需要开发者了解相关的原理和流程
2023-04-06
h5 生成ios免签
在iOS系统中,应用的安装必须经过苹果公司的审核和签名。因此,开发者需要将应用提交给苹果公司进行审核,审核通过后才能在App Store上架销售。但是,有些开发者希望绕过这一审核过程,直接将应用分发给用户,这就需要使用免签名技术。H5技术是一种基于Web技
2023-04-06
开发app 设置useragent
在开发移动应用时,我们经常需要设置User-Agent,以便服务器能够识别我们的应用程序。User-Agent是HTTP请求头的一部分,它包含了应用程序的信息,如操作系统、浏览器类型、版本等等。在移动应用中,我们可以使用User-Agent来标识我们的应用
2023-04-06
手机X5内核加载失败
在使用手机浏览器时,有时可能会遇到X5内核加载失败的情况。那么,这是为什么呢?本文将从原理和详细介绍两个方面来解答这个问题。一、原理首先,我们需要了解X5内核是什么。X5内核是腾讯开发的一款浏览器内核,它是基于谷歌Chrome内核进行优化和改进的。由于X5
2023-04-06
android和ios打包平台
Android和iOS是目前市场上最流行的移动操作系统,为了让应用程序在这两个平台上运行,需要进行打包。本文将详细介绍Android和iOS打包平台的原理和步骤。一、Android打包平台Android打包平台是一个将应用程序转换为可在Android设备上
2023-04-06
ios运行ipa
iOS是一款非常流行的移动操作系统,它的应用程序是以ipa格式进行发布和安装的。在iOS设备上运行ipa文件是一项非常普遍的操作,但是对于一些不太熟悉的人来说,可能会有些困惑。本文将介绍iOS运行ipa的原理和详细步骤。一、iOS运行ipa的原理iOS系统
2023-04-06
apk打包h5
APK打包H5是一种将H5网页应用打包成APK安装包的方法,使得H5应用可以像原生应用一样在Android设备上运行。这种方法在移动应用开发中非常常见,可以大大提高开发效率和用户体验。下面我们就来详细介绍一下APK打包H5的原理和实现方式。一、原理APK打
2023-04-06
ios应用拆包
iOS应用拆包指的是将已经打包好的iOS应用程序进行解压缩,进而获取其中包含的资源文件、代码文件等信息的过程。这个过程可以帮助开发者更好地了解iOS应用的构成、开发流程以及优化方向等,也可以帮助安全人员进行应用安全分析,从而发现应用中可能存在的漏洞和安全问
2023-04-06
html5+css+js打包apk
在互联网领域,HTML5、CSS和JS是应用最广泛的技术,它们可以用于开发网页、移动应用、桌面应用等。而在移动应用开发领域,打包成APK是非常常见的操作,下面就让我们来了解一下HTML5、CSS和JS打包成APK的原理和详细介绍。原理:在移动应用开发中,通
2023-04-06
pyinstaller打包apk
PyInstaller是一个将Python应用程序转换成独立的可执行文件(exe、dmg、apk等)的工具。它可以将Python程序打包成一个单独的执行文件,这个文件可以在没有Python解释器的情况下运行,使得Python程序的发布和使用变得更加简单方便
2023-04-06
ios开发 录制控件
在 iOS 开发中,录制控件是一个非常常见的功能,它可以让用户录制音频、视频以及屏幕操作等内容,并将其保存到设备中或上传至服务器。本文将介绍录制控件的原理以及详细的实现方法。一、录制控件的原理录制控件的原理主要涉及到音视频采集、编码、封装等技术。具体来说,
2023-04-06