Android修行之路——Android程序设计基础(二)

2012-03-22

继续接着昨天的。

每个Activity都要在AndroidManifest.xml中注册,否则找不到这个Activity。
<activity android:name=”.Activity02”></activity>

如果希望Android应用能够对外部事件(如电话呼入时,数据网络可用时,或者到了晚上时)做出响应,可以使用IntentReceiver。IntentReceiver在感兴趣的事件发生时会使用NotificationManager通知用户,但不能生成UI。IntentReceiver在AndroidManifest.xml中注册,也可以在代码中使用Context.registerReceiver()进行注册。当IntentReceiver被触发时,应用不必对请求调用IntentReceiver,系统会在需要时启动应用。
应用可以通过使用Context.broadcastIntent()将它们自己的IntentReceiver广播给其他应用。

3. ContentProvider
Android应用能将他们的数据保存到文件和Sqlite数据库中,甚至时任何有效的设备中。将应用数据与其他应用共享时,ContentProvider就可以发挥作用了。ContentProvider类实现了一组标准的方法,能够让其他的应用保存或读取此内容提供器处理的各种数据类型。
数据时应用的核心,android默认使用Sqlite作为系统数据库。
每个应用运行在各自进程中,访问其他应用的数据,数据需要在不同的虚拟机之间传递,(正常情况下,不能读取其他应用的db文件),ContentProvider是用来解决不同应用包之间共享数据的工具。
ContentProvider一个特殊的存储数据的类型,提供一套标准的接口用来获取和操作数据。
Android提供了现成的ContentProvider:Contacts、Browser、CallLog、Settings、MediaStore。
应用通过唯一的ContentResolver界面来使用具体的某个ContentProvider,然后就可以用ContentResolver提供的方法来使用你需要的ContentProvider了。ContentResolver提供的方法包括query()、insert()、update()等。使用这些方法,还会涉及URI。可以将它理解成string形式的ContentProvider的完全路径。

读取通讯录时,需要在AndroidManifest.xml中加上权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
照着书上例子获取通讯录时,取得电话号码时出错,2.1以后可以有多个号码,所有应该要考虑进去。

你可能感兴趣的:(android)