另外一种组件类型,content provider,不是有intent激活的。当contentResolver发出一个请求时,这种组件就会被激活。因为content resolver直接处理content provider的事务操作,所以组件不需要使用intent,而是直接调用ContentResolver对象的方法。这样在content provider和组件之间留了一层抽象层(为了安全)。
这里分别有一些方法是用来激活其组件的:
传递一个Intent对象给startActivity() 或 startActivityForResult() 来启动一个活动
传递一个Intent对象给startService() 来启动一个服务。或者传递一个Intent对象给 bindService() 来绑定一个服务。
传递一个Intent对象给sendBroadcast() , sendOrderedBroadcast() , 或者 sendStickyBroadcast()来发送一个广播。
调用ContentResolver的query()方法在content provider上执行一个查询。
Manifest文件
在系统启动应用程序组件之前,系统必须读取AndroidManifest.xml文件了解有哪些组件存在。这文件位于应用程序的根目录下。
这个文件除了申明应用组件,还可以:
制定应用程序所需的用户权限,例如,网络访问或对用户联系人的访问。
指定最小的API级别
声明软硬件所需的特性,例如:摄像头,蓝牙,多触控屏幕
其他库文件,例如,Google Maps library
等等
声明组件
声明一个活动的例子如下:
-------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:icon="@drawable/app_icon.png" ... >
<activity android:name="com.example.project.ExampleActivity"
android:label="@string/example_label" ... >
</activity>
...
</application>
</manifest>
-------------------------------------------------------------------------
在<application>元素中,android:icon属性指向图标资源。
在<activity>元素中,android:name属性制定Activity子类的全类名。Android:label属性为活动指定一个用户可见的文本标签。
<activity> 元素: 活动
<service> 元素: 服务
<receiver> 元素: 广播接收器
<provider> 元素: 内容提供者
活动,服务,内容提供者没有在manifest文件中声明,即使在程序代码中引用了,还是不能正常运行。然而,广播接受者有两种方式选择,既可以声明在manifest中或者动态创建在代码中(像BroadcastReceiver 对象 ),并且调用registerReceiver() 注册在系统中。