最近几天看了下android.provider包.这个包下的类都是一些获取sqliet3中存储的信息的provider.主要有获取联系人信息的(android.provider.ContactsContract)获取通话记录(android.provider.CallLog),获取设置信息(android.provider.Settings),获取存储的media信息(android.provider.MediaStore)(我主要就看了这四个类,当然还有其它的),信息的获取是通过构造游标(cursor)实现的.我感觉游标的构造就是通过一些方法来构造sql语句.
下面是我写CallLog的简单demo的代码片段:
Uri uri = Calls.CONTENT_URI;
String[] projections = new String[]{
Calls._ID,
Calls.NUMBER,
Calls.TYPE
};
String selections = null;
String[] selectionsArgs = null;
String sortOrder = null;
Cursor cursor = this.managedQuery(uri, projections, selections, selectionsArgs, sortOrder);
int count = -1;
if(cursor != null){
count = cursor.getCount();
}
if(count > 0){
for(int i = 0;i<count ;i++){
cursor.moveToNext();
String s0 = cursor.getString(0);
String s1 = cursor.getString(1);
String s2 = cursor.getString(2);
}
}
Uri是要查询的table的url,projection是要查询的字段,selections相当于where条件部分,selectionArgs是where条件的值,最后sortOrder是order by 部分.下面是条日志中截取的sql语句(这条语句是在写ContactsContract练习时专门定义错误的方法后打出来的日志,正确整不出来,嘿嘿,不知道有没有别的设置)
SELECT _id,
display_name,
data1,
data3,
mimetype,
contacts_status_updates.status_label AS contact_status_label
FROM view_data_restricted data
LEFT OUTER JOIN status_updates contacts_status_updates ON (status_update_id =
contacts_status_updates.status_update_data_id)
WHERE (1)
AND (vnd.android.cursor.dir / data = 'vnd.android.cursor.item/im')
在获取ContactsContract信息时,可以通过ContactsContract.Data的CONTENT_URI查询可以查到通讯中的所有信息,也可以通过一些专有的Uri进行获取专门的信息如Phone,Email等(但是我感觉完全没必要,有Data的Uri完全足够,经过selections过滤掉就可以了);在获取Media信息时有EXTERNAL_CONTENT_URI,INTERNAL_CONTENT_URI之分;Setting信息主要包含了安全(secure)和系统(system)设置,都有相应的CONTENT_URI,具体的在用的时候查看下api就明白了。当然在这个包下还有android.provider.LiveFolders,android.provider.UserDictionary等类。
分享到:
相关推荐
例如,Android运行时(ART)、视图系统、内容提供者(Content Provider)、Intent机制等都在这个目录下。 2. **system**: 这个目录包含了Android系统的核心组件和服务,如电源管理、硬件抽象层(HAL)、网络服务、...
Android软件开发工具包(SDK)是开发Android应用的基础,包含各种工具、库和API文档。SDK Manager是用于下载和管理这些资源的工具,包括平台工具、构建工具、模拟器系统映像等。 3. **Android Studio**: 官方推荐...
4. **框架服务**:包括了系统服务如Activity Manager(管理应用生命周期),Package Manager(处理应用安装和升级),Content Provider(数据共享),Broadcast Receiver(广播接收者)等,它们构成了Android应用...
开发者可以查看并运行这些项目,了解Android应用程序的结构,学习如何创建Activity、Service、Broadcast Receiver以及Content Provider等核心组件。此外,还可以通过研究布局文件(XML)来学习用户界面设计,通过...
1. **Android SDK**: Android SDK(软件开发工具包)是开发Android应用的基础,包含了编写、调试和部署应用所需的所有工具。SDK包括Java开发工具、模拟器、文档和API库。 2. **Android Studio**: Google推出的官方...
通过深入分析`NewFileManager`的源代码,开发者可以学习到如何有效地构建一个功能完备且用户体验良好的Android文件管理器。同时,这也会涉及到Android的存储访问、权限控制、UI设计等多个核心知识点,对于提升...
《Android Unleashed源代码详解》 ...通过对Android Unleashed源代码的深度学习,开发者不仅可以提升对Android系统底层机制的理解,还能掌握更高效的开发技巧,为构建高质量的Android应用奠定坚实基础。
4. **Frameworks(框架)**:包括Android的API层,如Android Runtime(ART)、View System、Intent System等,开发者通过这些接口与系统进行交互。 5. **Applications(应用)**:预装的系统应用,如Phone、...
本压缩包文件“android_sdk_source_code”提供了Android 4.1(代号Jelly Bean)的SDK源码,这对于开发者来说是一个宝贵的学习资源,特别是对那些希望进行系统级开发或者进行自定义修改的人员。 首先,Android 4.1 ...
在此版本上开发飞信客户端,开发者需要对早期Android API有深入理解,包括Activity管理、Intent通信、Service后台服务以及Content Provider数据共享等内容。 源码中包含的文件"AnFetion"很可能是整个项目的根目录,...
在Android开发领域,"mycode android"可能指的是一个个人或团队开发的代码库,包含了他们在Android平台上构建应用的相关代码。这个压缩包可能是他们的项目源码,用于分享、备份或者版本控制。下面我们将深入探讨...
在Android平台上将文件上传到.NET服务器是一项常见的任务,涉及到客户端(Android)与服务器端(.NET)的交互。本文将详细讲解如何实现这一过程,并提供相关的代码示例。 首先,客户端(Android)需要使用HTTP或者...
在Android应用开发中,调用摄像头进行拍照是常见的功能之一,尤其在社交、影像记录类应用中不可或缺。然而,随着Android系统的不断更新,对于权限管理、API接口的改动,使得在不同版本上实现这一功能变得稍有复杂。...
android:name="androidx.core.content.FileProvider" android:authorities="com.yourdomain.fileprovider" android:exported="false" android:grantUriPermissions="true"> android:name="android.support....
《first code Android》是一本专为初学者设计的Android编程指南,旨在帮助新手快速入门Android应用开发。这本书通过详实的步骤和实例,系统地介绍了Android开发的基本概念、工具使用和核心组件,让读者能够逐步掌握...
在Android开发中,调用系统相机并保存拍摄的照片是一项常见的任务。这个"android调用拍照存储demo"就是一个...开发者可以通过学习这个示例,进一步了解Android与相机交互的机制,以及如何在应用中正确处理文件存储。
Android 通过原生 API 获取所在位置的经纬度 Android 通过原生 API 获取所在位置的经纬度是 Android 开发中的一项重要功能,尤其是在依赖于地理位置功能的应用中。本文将介绍 Android 通过原生 API 获取所在位置的...
android:name="androidx.core.content.FileProvider" android:authorities="your.package.name.fileprovider" android:exported="false" android:grantUriPermissions="true"> android:name="android.support...
An example of an Android application that makes use of code and resources provided in an Android library project. Specifically, this application uses code and resources provided in the TicTacToeLib ...
3. **Android SDK**: 开发者需要安装Android SDK,它包含了构建Android应用所需的各种工具,如构建工具、API库、调试工具等。 4. **Activity与Intent**: Activity是Android应用的基本组件,代表用户界面的一个屏幕...