最近在做一个东西,用到了通讯录,就把通讯录的东西又复习了一遍,在学习的过程中遇到了一个问题,编译器一直报空指针异常,贴上代码讲解:
public void startQuery1() { ContentResolver resolver = getContentResolver(); Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri dataUri = Uri.parse("content://com.android.contacts/data"); Cursor cursor = resolver.query(uri, null, null, null, null); while (cursor.moveToNext()) { String id = cursor.getString(cursor.getColumnIndex("contact_id")); System.out.println(id); Cursor dataCursor = resolver.query(dataUri, null, null, null, null); while(dataCursor.moveToNext()){ String data1 = dataCursor.getString(dataCursor.getColumnIndex("data1")); String mimetype = dataCursor.getString(dataCursor.getColumnIndex("mimetype")); data1 = data1==null?"wu":data1; System.out.println(data1); System.out.println(mimetype); } dataCursor.close(); } cursor.close(); }
在打印id这一行,一直报空指针异常,就是获取到的id为空,我用模拟器编译的时候发现没问题,我就很奇怪,于是连上手机把手机里面的/data/data/com.android.providers.contacts/databases/contacts2.db(联系人数据都在这个表里面)弄出来,一看,原来我的contact_id是直接从3开始的(我删除过一些联系人导致,而增加联系人的时候id是自动增长的),所以才会一个也没打印直接报错了。于是我加了一个判断,如果是空就不打印,这样就解决了。
然后现在是所有的数据都读出来了,我们要拿到我们想要的数据就要做一个筛选,我们常用的联系人字段在mimetypes表里面,上面已经获取出来了mimetype,
我们通过判断mimetype可以筛选到我们要的数据,这就不多说了。
相关推荐
在本案例中,"asp实现简易通讯录"是一个使用ASP技术构建的简单联系人管理系统,它提供了基本的联系人信息的增加、删除、修改和查询功能。下面将详细介绍这个系统可能涉及的关键知识点。 1. **ASP基础**: ASP是一...
总的来说,这个Java简易手机通讯录项目展示了如何结合Java和XML技术来实现一个简单的数据管理应用。它涵盖了XML数据存储、解析、对象-XML绑定以及基本的GUI编程,对于初学者来说是一个很好的学习案例,有助于理解和...
- 通讯录系统可能采用了单例模式来保证全局只有一个通讯录实例,这样可以避免资源的浪费和数据的一致性问题。 9. **简单对象模型**: - 联系人信息可以封装在一个名为`Contact`的类中,包含姓名、电话、邮箱等...
VS2010的调试工具可以帮助定位和修复程序中的错误,而良好的错误处理机制能确保程序在遇到问题时能够优雅地处理,而不是突然崩溃。 这个项目不仅锻炼了学生的编程技能,还强化了他们对数据库系统、软件工程实践和...
在IT领域,通讯录系统是常见的应用场景之一,用于管理和操作联系人的信息。在这个"3层结构实现的通讯录"项目中,我们主要...通过这样的项目实践,开发者可以提升自己在软件开发过程中的整体架构设计和问题解决能力。
8. **错误处理**:通过检查函数返回值和使用assert等工具,确保程序在遇到问题时能适当地响应。 9. **代码组织**:良好的代码结构和注释,使代码易于理解和维护。 这个项目虽然简单,但涉及的C语言基础概念广泛,...
开发过程中,可能会遇到的问题包括内存管理(如动态分配和释放内存)、异常处理(确保程序在遇到错误时能优雅地退出)、界面响应速度优化(如使用异步更新来避免阻塞UI线程)等。为了调试和测试,开发者可能使用...
JavaWeb开发是一个涵盖广泛的技术领域,它涉及到服务器端编程、前端界面设计以及数据库交互等多个环节。在这个"javaweb开发实用的B/S...此外,实践中遇到的问题也会促进对Web开发原理的深入理解和问题解决能力的提升。
在文件操作方面,C++提供了`fstream`库,其中的`ifstream`和`ofstream`类用于读写文件。`Contact`类的`save()`和`load()`方法将利用这些类将通讯录数据序列化到文件,并从文件反序列化回内存。 在实际编程中,还...
10. 错误处理:程序可能会包含错误检查和异常处理代码,以确保在遇到问题时能正确地恢复或提供反馈。 总的来说,这个“通讯录 c++”项目展示了C++在实际应用中的基本使用,包括文件操作、对象导向编程、数据结构和...
在信息技术高速发展的今天,个人信息管理变得尤为重要,其中,通讯录系统作为一种便捷的联系方式管理工具,被广泛应用于日常生活和工作中。本文将深入探讨如何使用Visual Basic(VB)编程语言与Access2003数据库系统...
文档通常会指导你如何开始编程,包括必要的输入输出格式、功能模块划分以及可能遇到的问题和解决方案。 在完成这个项目时,你需要掌握以下几个关键知识点: 1. **基本数据类型与控制结构**:理解并熟练运用C语言中...
我们需要创建一个“联系人”类,其中包含属性(如姓名、电话号码等)和方法(如添加、删除、查找等操作)。通过类的封装,我们可以保护数据不被随意修改,并提供易于使用的接口。同时,可能还会有一个“通讯录”类,...
本项目"OC实现简单通讯录"旨在利用OC来创建一个基本的通讯录应用,它具备添加、删除联系人以及显示联系人信息的功能。以下是对这些功能的详细解释和实现方式: 1. **对象模型设计**:通讯录应用的核心是数据结构,...
- 对大量联系人进行操作时,考虑效率问题,如使用合适的数据结构和算法来提升性能。 综上所述,"通讯录(java版本)"项目涵盖了Java开发的多个重要方面,包括基本的面向对象编程、GUI设计、数据存储与检索、以及...
通过学习和分析这个C#通讯录源代码,初学者可以提升对C#编程的理解,熟悉Windows应用程序开发流程,而有经验的开发者则可以借鉴其中的设计思想和技术实现,用于自己的项目开发。同时,这也是一个很好的实践案例,...
- **加强问题解决能力**:培养运用所学知识解决实际问题的能力,特别是针对通讯录系统中可能遇到的各种需求。 **1.2 设计环境** 本系统基于以下技术平台开发: - **开发工具**:Microsoft Visual Studio 2008,一...
错误处理则确保在遇到问题时,如SQL查询失败,系统能提供友好的错误提示,而不是直接崩溃。 在实际开发中,考虑到安全性,可能还需要对用户输入进行验证和清理,防止SQL注入攻击。ASP提供了一些内置函数,如Server....
Qt提供了异常处理机制,确保在遇到问题时能够给出有意义的错误信息,帮助开发者调试和修复问题。 通过以上步骤,我们可以构建一个完整的Qt通讯录应用,实现登录、数据库操作及联系人管理等功能。Qt的灵活性和强大的...
最后,报告还探讨了**设计过程中遇到的问题和解决方法**,这可能涉及到技术实现上的挑战,如性能优化、数据一致性或兼容性问题等,以及如何通过学习和研究找到解决方案的过程。 总的来说,这个“通讯录报告”提供了...