众所周知,android平台的向下的兼容性并不好,很多新版本的android系统的api与低版本的并不一样,但是我们遇到的情况是android的app一般只有一个,不可能针对每一个版本开发一套app,好在谷歌公司还算人性化的提供了 Build.VERSION.SDK_INT这个常亮,会根据不同android版本有不同的值。以下为兼容安卓各个版本读取通讯录的demo
Uri contentUri;
String id_field;
String name_field;
String number_field;
boolean newapi = Build.VERSION.SDK_INT >= 5;//代表版本至少是2.0
if (newapi) {
contentUri = CommonDataKinds.Phone.CONTENT_URI;
id_field = CommonDataKinds.Phone.CONTACT_ID;
name_field = CommonDataKinds.Phone.DISPLAY_NAME;
number_field = CommonDataKinds.Phone.NUMBER;
} else {
contentUri = Contacts.People.CONTENT_URI;
id_field = Contacts.People._ID;
name_field = Contacts.People.DISPLAY_NAME;
number_field = Contacts.People.NUMBER;
}
ContentResolver cr = ReadMultipleSMSActivity.this.getContentResolver();
Cursor phone = cr.query(contentUri, new String[] { id_field,
name_field, number_field}, null, null, "sort_key");//按姓名升序排列
while (phone.moveToNext()) {
String contactId = phone.getString(phone
.getColumnIndex(id_field));
String displayName = phone.getString(phone
.getColumnIndex(name_field));
String PhoneNumber = CommTool.phoneNumberDeal(phone.getString(phone
.getColumnIndex(number_field)));
if (PhoneNumber!=null) {
contactsList.add(displayName+"\n"+showText+
PhoneNumber);
}
}
if (phone != null){
phone.close();
}
分享到:
相关推荐
《绿豆通讯录》是Android移动开发领域的一个经典实践项目,主要针对初学者设计,旨在帮助他们更好地理解和掌握Android Studio的使用以及Android应用的基本构建过程。这个项目覆盖了多个关键知识点,下面将对这些核心...
总的来说,通过Pbap协议在Android上读取通讯录是一项涉及蓝牙连接、数据交换和VCard解析的复杂任务。开发者需要对蓝牙协议有深入理解,并具备处理设备兼容性和网络通信问题的能力。这份资料提供的代码可能需要根据...
要读取通讯录,我们需要在`AndroidManifest.xml`文件中声明`READ_CONTACTS`权限: ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> ``` 然后,在代码中,我们可以通过`ContentResolver...
不同Android版本可能存在API差异,因此需要使用版本兼容库或条件编译来确保代码在各个版本上都能正常工作。 10. **代码结构和设计模式**: 本源码可能包含Activity、Fragment、Adapter等组件,以及单例模式、观察...
11. **版本兼容性**:Android有多种版本和设备,因此需要确保应用能在不同版本上运行。使用Support Library或AndroidX库可以帮助解决版本兼容问题。 12. **测试与调试**:学习如何编写单元测试,进行UI测试,以及...
在Android应用开发中,访问和操作通讯录是一项常见的需求,例如创建新的联系人、读取现有联系人或者更新联系人的信息。本教程将深入探讨如何在Android中与通讯录进行交互,尤其是涉及到有索引和分割的通讯录数据处理...
【Android Studio简易通讯录界面】 在Android开发中,创建一个简易的通讯录界面是一个常见的练习,可以帮助开发者熟悉数据获取、...同时,随着Android版本的更新,开发者需要关注API的变化,确保应用的兼容性和性能。
注意Android系统版本间的差异,不同的API级别可能会影响到通讯录操作的实现方式。例如,从Android 6.0(API级别23)开始,运行时权限管理成为强制要求,需要在应用运行时动态请求权限。 9. **性能优化**: 对于...
不同的Android版本可能会有API的变更,因此在编写代码时,应该使用条件语句或兼容库来确保在多个版本上都能正常工作。 通过以上步骤,你可以在自己的Android应用中实现类似“android 读取联系人demo”的功能,展示...
在Android 6.0(API级别23)及以上版本,系统采用了运行时权限管理,应用程序在运行时需要请求用户授予特定的敏感权限,如读取联系人、拨打电话和发送短信。在项目中,你需要在`AndroidManifest.xml`文件中声明所需...
因此,编写兼容性良好的通讯录代码,需要考虑到各种Android版本的差异。 10. **优化性能**:在处理大量联系人时,要注意避免一次性加载全部数据,而是采用CursorLoader或者LiveData进行分页加载,提高用户体验。 ...
6. 权限管理:Android 6.0及以上版本引入了运行时权限模型,需要在运行时请求读写联系人、读取存储卡等权限。在应用启动时或者需要这些权限时,使用ActivityCompat.requestPermissions()方法向用户请求权限,并在...
在Android系统中,获取手机通讯录是常见的功能需求,它涉及到Android权限管理、ContentProvider、Cursor...实际开发中,还需考虑不同Android版本的兼容性、用户界面设计、错误处理等多个方面,以提供良好的用户体验。
在实现这些功能时,需要注意兼容性问题,因为Android系统版本间API可能存在差异。此外,为了用户体验,应适当处理异步加载和权限请求,避免阻塞主线程。在`Contact_Demo`这个示例项目中,你应该能看到具体实现这些...
由于Android版本众多,源代码可能包含了版本兼容性处理,比如使用Support Library或AndroidX库,确保应用能在不同版本的Android设备上正常运行。 10. **性能优化**: 为了提供流畅的用户体验,源代码中可能包含了...
因此,编写兼容性良好的代码至关重要,可以使用Support Library或AndroidX库来确保向后兼容。 9. **隐私和合规**: 访问用户数据时,应遵循隐私政策和GDPR等相关法规,确保数据安全并明确告知用户你的应用如何使用...
这份教程旨在帮助开发者了解并掌握Android平台下通讯录功能的实现,包括用户界面设计、数据存储、联系人读取与写入等核心知识点。 一、Android环境搭建 首先,我们需要一个完整的Android开发环境,包括安装Java ...
- **Android版本适配**:由于Android设备的版本多样,开发者需要考虑API级别的兼容性问题,可能需要使用Support Library或AndroidX库。 10. **调试与测试**: - **Logcat**:用于输出程序运行日志,帮助开发者...
10. **适配多版本和设备**:由于Android系统的碎片化,开发者需要考虑不同设备和Android版本之间的兼容性问题,确保应用能在各种环境下正常运行。 综上所述,Android手机通讯录涉及到的技术和概念广泛,涵盖了系统...
对于读取联系人,需要添加`<uses-permission android:name="android.permission.READ_CONTACTS" />`,而对于访问图库,由于Android的不同版本有不同的API处理方式,通常我们至少需要`<uses-permission android:name=...