面向对象的开发6 关键字 final self static const
2011-09-30 07:47
441 查看
QuickContactsDemo示例介绍了如果使用Content Provider来访问Android系统的Contacts 数据库。
Content Provider为不同应用之间共享数据提供了统一的接口,通过对底层数据源的抽象,Content Provider实现了应用程序代码和数据层分离。Android平台对大部分的系统数据库都提供了对应的Content Provider接口:
Browser: 读取和修改Bookmark,Browser history或Web Searches。
CallLog: 查看或是更新Call History(打入电话或是打出电话,未接电话等)
Contacts: 检索,修改或存储通讯录。
MediaStore: 访问媒体库(包括声音,视频,图像等)。
Settings: 访问系统设置,查看或是修改蓝牙设置,铃声设置等。
Android系统的每个Content Provider都定义了一个CONTENT_URI,功能类似于数据库的名称。Android中每个Context对象(如Activity)对含有一个ContentResolver,ContentResolver可以根据CONTENT_URI获取对应的Content Provider:
public final
Cursorquery(Uri uri,
String[] projection,
String selection,
String[] selectionArgs,
String sortOrder)
Uri: 需要访问的Content Provider对应的URI,如通讯录的URI为Contacts.CONTENT_URI。
Projection: 需要返回的表的列名,如为NULL,则返回表的全部列。
Selection: 查询数据表的条件,相当于SQL 的Where语句。
selectionArgs: 相当于SQL查询条件的查询参数?
sortOrder: 相当于SQL查询的Order语句,查询排序,为空时,返回记录的缺省顺序。
可以看得出,Content Provider和 数据库的用法非常类似。query返回的对象为Cusor ,有Cursor对象后就可以和访问数据库表一样来insert ,delete ,update 数据库。
startManagingCursor(c); 让Activity来管理cursor 的生命周期。
此外访问Content Provider还需要合适的权限才能正确访问,比如读写通讯录,需要在AndroidManifest.xml设置:
<uses-permission android:name=”android.permission.READ_CONTACTS” />
<uses-permission android:name=”android.permission.WRITE_CONTACTS” />
才能有权限访问通信录。
注:如果在模拟器上运行这个示例,需要在Contacts添加几个Contacts,否则这个例子没有显示。
Content Provider为不同应用之间共享数据提供了统一的接口,通过对底层数据源的抽象,Content Provider实现了应用程序代码和数据层分离。Android平台对大部分的系统数据库都提供了对应的Content Provider接口:
Browser: 读取和修改Bookmark,Browser history或Web Searches。
CallLog: 查看或是更新Call History(打入电话或是打出电话,未接电话等)
Contacts: 检索,修改或存储通讯录。
MediaStore: 访问媒体库(包括声音,视频,图像等)。
Settings: 访问系统设置,查看或是修改蓝牙设置,铃声设置等。
Android系统的每个Content Provider都定义了一个CONTENT_URI,功能类似于数据库的名称。Android中每个Context对象(如Activity)对含有一个ContentResolver,ContentResolver可以根据CONTENT_URI获取对应的Content Provider:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND (" + Contacts.HAS_PHONE_NUMBER + "=1) AND (" + Contacts.DISPLAY_NAME + " != '' ))"; Cursor c = getContentResolver().query(Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); startManagingCursor(c); ContactListItemAdapter adapter = new ContactListItemAdapter(this, R.layout.quick_contacts, c); setListAdapter(adapter); }getContentResolver() 取的ContentResolver对象,它的Query方法定义如下:
public final
Cursorquery(Uri uri,
String[] projection,
String selection,
String[] selectionArgs,
String sortOrder)
Uri: 需要访问的Content Provider对应的URI,如通讯录的URI为Contacts.CONTENT_URI。
Projection: 需要返回的表的列名,如为NULL,则返回表的全部列。
Selection: 查询数据表的条件,相当于SQL 的Where语句。
selectionArgs: 相当于SQL查询条件的查询参数?
sortOrder: 相当于SQL查询的Order语句,查询排序,为空时,返回记录的缺省顺序。
可以看得出,Content Provider和 数据库的用法非常类似。query返回的对象为Cusor ,有Cursor对象后就可以和访问数据库表一样来insert ,delete ,update 数据库。
startManagingCursor(c); 让Activity来管理cursor 的生命周期。
此外访问Content Provider还需要合适的权限才能正确访问,比如读写通讯录,需要在AndroidManifest.xml设置:
<uses-permission android:name=”android.permission.READ_CONTACTS” />
<uses-permission android:name=”android.permission.WRITE_CONTACTS” />
才能有权限访问通信录。
注:如果在模拟器上运行这个示例,需要在Contacts添加几个Contacts,否则这个例子没有显示。
相关文章推荐
- php中$this、static、final、const、self 等几个关键字的用法
- php类中的$this,static,final,const,self这几个关键字使用方法
- abstract,final,const,self,static关键字的使用
- PHP面向对象(OOP):.static和const关键字的使用(self::)
- php中$this、static、final、const、self 等几个关键字的用法
- php面向对象之final static const关键字的使用
- php面向对象类中的$this,static,final,const,self及双冒号 :: 这几个关键字使用方法。
- php类中的$this,static,final,const,self这几个关键字使用方法
- php关键字:final self static const
- const,define,static,$GLOBALS,final关键字解释
- iOS开发中的关键字const/static/extern
- final static const关键字的使用
- php面向对象全攻略 (十) final static const关键字的使用
- 面向对象3_关键字【this】【static】【final】
- mabatis学习之前今日内容介绍 1、final 关键字 2、static 关键字 3、匿名对象 4、内部类 5、包的声明与访问 6、访问修饰符 7、代码块 第一节课 ###01(面向对象)fin
- Java 开发中static 和 final 关键字
- iOS开发中的关键字const/static/extern
- static和const,及final关键字的使用
- PHP 面向对象中常见关键字使用(final、static、const和instanceof)
- 嵌入式开发中关键字const、static、volatile的用法分析