`
zhonglunshun
  • 浏览: 137728 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

简单的通讯录操作和其中遇到的问题

阅读更多

最近在做一个东西,用到了通讯录,就把通讯录的东西又复习了一遍,在学习的过程中遇到了一个问题,编译器一直报空指针异常,贴上代码讲解:

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实现简易通讯录"是一个使用ASP技术构建的简单联系人管理系统,它提供了基本的联系人信息的增加、删除、修改和查询功能。下面将详细介绍这个系统可能涉及的关键知识点。 1. **ASP基础**: ASP是一...

    通讯录通讯录通讯录通讯录

    在信息技术高速发展的今天,个人信息管理变得尤为重要,其中,通讯录系统作为一种便捷的联系方式管理工具,被广泛应用于日常生活和工作中。本文将深入探讨如何使用Visual Basic(VB)编程语言与Access2003数据库系统...

    java简易手机通讯录.rar

    总的来说,这个Java简易手机通讯录项目展示了如何结合Java和XML技术来实现一个简单的数据管理应用。它涵盖了XML数据存储、解析、对象-XML绑定以及基本的GUI编程,对于初学者来说是一个很好的学习案例,有助于理解和...

    用集合,IO和html实现简易通讯录系统

    - 通讯录系统可能采用了单例模式来保证全局只有一个通讯录实例,这样可以避免资源的浪费和数据的一致性问题。 9. **简单对象模型**: - 联系人信息可以封装在一个名为`Contact`的类中,包含姓名、电话、邮箱等...

    数据库课程设计_个人通讯录

    VS2010的调试工具可以帮助定位和修复程序中的错误,而良好的错误处理机制能确保程序在遇到问题时能够优雅地处理,而不是突然崩溃。 这个项目不仅锻炼了学生的编程技能,还强化了他们对数据库系统、软件工程实践和...

    3层结构实现的通讯录

    在IT领域,通讯录系统是常见的应用场景之一,用于管理和操作联系人的信息。在这个"3层结构实现的通讯录"项目中,我们主要...通过这样的项目实践,开发者可以提升自己在软件开发过程中的整体架构设计和问题解决能力。

    C语言做的手机通讯录

    8. **错误处理**:通过检查函数返回值和使用assert等工具,确保程序在遇到问题时能适当地响应。 9. **代码组织**:良好的代码结构和注释,使代码易于理解和维护。 这个项目虽然简单,但涉及的C语言基础概念广泛,...

    VC++通讯录

    开发过程中,可能会遇到的问题包括内存管理(如动态分配和释放内存)、异常处理(确保程序在遇到错误时能优雅地退出)、界面响应速度优化(如使用异步更新来避免阻塞UI线程)等。为了调试和测试,开发者可能使用...

    C++ 通讯录实例 详细源码

    在文件操作方面,C++提供了`fstream`库,其中的`ifstream`和`ofstream`类用于读写文件。`Contact`类的`save()`和`load()`方法将利用这些类将通讯录数据序列化到文件,并从文件反序列化回内存。 在实际编程中,还...

    javaweb开发实用的B/S通讯录包含需要的数据库导入文件

    JavaWeb开发是一个涵盖广泛的技术领域,它涉及到服务器端编程、前端界面设计以及数据库交互等多个环节。在这个"javaweb开发实用的B/S...此外,实践中遇到的问题也会促进对Web开发原理的深入理解和问题解决能力的提升。

    通讯录 c++

    10. 错误处理:程序可能会包含错误检查和异常处理代码,以确保在遇到问题时能正确地恢复或提供反馈。 总的来说,这个“通讯录 c++”项目展示了C++在实际应用中的基本使用,包括文件操作、对象导向编程、数据结构和...

    java通讯录java通讯录java通讯录

    Java通讯录是一个典型的Java应用程序,它允许用户存储、管理和检索联系人的信息,如姓名、电话号码、电子邮件地址等。在Java编程中,实现这样一个通讯录系统涉及到多个关键知识点,包括数据结构、对象封装、文件存储...

    c语言c++课程设计_通讯录

    文档通常会指导你如何开始编程,包括必要的输入输出格式、功能模块划分以及可能遇到的问题和解决方案。 在完成这个项目时,你需要掌握以下几个关键知识点: 1. **基本数据类型与控制结构**:理解并熟练运用C语言中...

    课程设计--通讯录管理

    我们需要创建一个“联系人”类,其中包含属性(如姓名、电话号码等)和方法(如添加、删除、查找等操作)。通过类的封装,我们可以保护数据不被随意修改,并提供易于使用的接口。同时,可能还会有一个“通讯录”类,...

    OC实现简单通讯录

    本项目"OC实现简单通讯录"旨在利用OC来创建一个基本的通讯录应用,它具备添加、删除联系人以及显示联系人信息的功能。以下是对这些功能的详细解释和实现方式: 1. **对象模型设计**:通讯录应用的核心是数据结构,...

    通讯录(java版本)

    - 对大量联系人进行操作时,考虑效率问题,如使用合适的数据结构和算法来提升性能。 综上所述,"通讯录(java版本)"项目涵盖了Java开发的多个重要方面,包括基本的面向对象编程、GUI设计、数据存储与检索、以及...

    C#通讯录源代码

    通过学习和分析这个C#通讯录源代码,初学者可以提升对C#编程的理解,熟悉Windows应用程序开发流程,而有经验的开发者则可以借鉴其中的设计思想和技术实现,用于自己的项目开发。同时,这也是一个很好的实践案例,...

    通讯录管理系统 asp sql

    错误处理则确保在遇到问题时,如SQL查询失败,系统能提供友好的错误提示,而不是直接崩溃。 在实际开发中,考虑到安全性,可能还需要对用户输入进行验证和清理,防止SQL注入攻击。ASP提供了一些内置函数,如Server....

    qt通讯录实验

    Qt提供了异常处理机制,确保在遇到问题时能够给出有意义的错误信息,帮助开发者调试和修复问题。 通过以上步骤,我们可以构建一个完整的Qt通讯录应用,实现登录、数据库操作及联系人管理等功能。Qt的灵活性和强大的...

Global site tag (gtag.js) - Google Analytics