免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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后端开发指的是在Android设备上运行的服务器端应用程序开发,主要用于提供基于网络的服务,例如移动应用程序的后端、Web API和Web服务。本文将介绍Android后端开发的原理和详细介绍。一、Android后端开发的原理Android后
2023-04-06
APP分发渠道
APP分发渠道指的是将开发的APP推广到用户手中的途径,主要分为三种:应用商店、第三方应用市场和自有渠道。下面将对这三种渠道进行详细介绍。一、应用商店应用商店是指由手机厂商、应用市场公司或者运营商等机构提供的APP下载平台。目前国内主要的应用商店有:苹果应
2023-04-06
网址 打包app 缓存
在移动应用开发中,打包APP缓存是一个非常重要的步骤。缓存可以提高应用程序的性能,减少网络请求,减轻服务器的负担,同时也可以提高用户体验。本文将介绍打包APP缓存的原理和详细步骤。一、缓存的原理缓存是指将数据存储在本地,以便下次请求时可以快速获取数据,而不
2023-04-06
网页变APP
网页变APP,也叫做Web App,是指通过Web技术开发的应用程序,可在多个平台上运行。它可以运行在浏览器中,也可以通过安装包的方式安装到移动设备或电脑上,用户可以像使用本地应用程序一样使用它。与原生应用程序相比,Web App的优点是开发成本低、跨平台
2023-04-06
appstore ipa
App Store是苹果公司推出的应用程序下载平台,用户可以在该平台上下载各种应用程序,包括游戏、社交网络应用、生产力工具、影音娱乐等等。这些应用程序都以ipa格式发布在App Store上,用户可以通过App Store直接下载安装。那么,什么是ipa格
2023-04-06
aab转apk工具
aab转apk工具是一种将Google Play发布的aab格式应用转化为apk格式应用的工具。aab格式应用是Google Play上新推出的一种应用发布格式,它将应用的资源和代码分离开来,让下载安装的应用更小更快。然而,因为这种格式的应用只能在Goog
2023-04-06
apk文件打包
APK是Android应用程序的安装包,其中包含了应用程序的代码、资源、配置文件、库文件等。在Android开发中,我们需要将自己编写的应用程序打包成APK文件,才能在Android设备上进行安装和运行。下面就来详细介绍一下APK文件打包的原理及流程。一、
2023-04-06
apk打包成ipa包
APK是Android系统上的应用程序包,IPA是iOS系统上的应用程序包。由于Android和iOS系统不同,因此无法直接将APK转换为IPA。但是,有一些工具和方法可以将APK打包成IPA。首先,我们需要了解APK和IPA之间的区别。APK使用Java
2023-04-06
html直接封装apk
HTML直接封装APK是一种将HTML5应用转化为Android应用的方法,它可以让开发者在不使用Java语言的情况下,将Web应用打包成APK文件,方便在Android平台上运行。这种方法的原理是将HTML5应用通过WebView控件嵌入到APK中,同时
2023-04-06
cilidiliipa包
cilidiliipa包是一款用于Python语言的工具包,它可以帮助开发人员快速地对音频文件进行处理和分析。cilidiliipa包的功能包括音频数据的读取、处理、转换和可视化,可以支持多种音频格式和音频采样率。cilidiliipa包的原理主要是基于P
2023-04-06
shell 打包 ipa
在iOS开发中,我们通常需要将代码打包成ipa文件以便于上传到App Store或者在内部分发给团队成员。而打包ipa文件的过程中,使用shell脚本可以提高打包的自动化程度,减少重复工作的时间和人力成本。首先,我们需要了解一下ipa文件的结构。ipa文件
2023-04-06
十五、手机站转APP引导页功能
手机站转APP引导页功能手机站封装的移动应用APP,怎么给APP加上原生的启动图呢?名词解释:什么是原生引导页?当APP第一次被启动的时候,出现2-5张滑动幻灯似得的引导页面!有引导页,可以快速让客户了解APP的主要核心功能,或者业务流程,或者突出想推广的
2017-04-24