你可以通过传递一个Intent给诸如sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()等方法来初始化一个广播。
你可以通过调用ContentResolver的query()方法来执行一次content provider的查询操作。
更多的关于intent的内容,可以参看文档中的Intents and Intent Filters。更多的关于激活特定组件的内容可以参看文档中的:Activities、Services、BroadcastReceiver、Content Providers。
关于Manifest文件
在Android系统可以启动一个应用程序组件之前,Android系统必须通过读
取这个程序的AndroidManifest.xml(即manifest文件)文件来确定要启动的组件存在。你的程序必须在这个manifest文件声明用到的所有的组件,并且这个manifest文件必须在项目的根目录下。
另外,这个manifest文件还声明一些其他的东西,比如:
确定这个程序需要的所有权限,比如Internet访问权限或者读取用户联系人权限。
声明这个运行这个程序所需要的最低API版本,这个可以根据开发该程序所使用的API版本。
声明该程序所需要的硬件或软件特征(features),比如照相机、蓝牙服务或者多点触屏。
声明该程序需要链接(link against)的API库(不是Andorid的framework APIs),比如Google Maps library。
组件声明
6
Manifest文件的首要任务就是通知系统关于程序中要使用的组件。比如,一
个manifest文件可以用如下的方式来声明一个activity:
[java] view plaincopy
1.
3. 7. ...
8. 9.
在元素中,android:icon属性用于指定一个用于标示该程序的
icon。
在元素中,android:name属性用于确定这个扩展自Activity的子类
的全路径名,android:label属性用于标示这个activity的对于用户可见的label。
你必须要用以下方式来声明你的程序组件: 1、 activities:标签 2、 services:
3、 broadcast receiver:
如果程序中用到activities、services和content providers,你没有在manifest
文件中声明,那么这些组件将不会被系统知道,结果就是你的程序不能运行。然
7
而,broadcast receiver既可以在manifest文件中声明也可以在代码中动态创建(BroadcastReceiver),并通过调用registerReceiver()在系统中注册。
更多关于怎样为你的程序构建manifest文件,请参看文档
The AndroidManifes.xml文件。
声明组件的能力
正如在上面Activating Components中讨论的那样,你可以使用一个Intent来
启动activities、services和broadcast receiver。你可以通过在intent中注明目标组件的名字(使用的是组件的类名)来显示的启动组件。然而,intents真正强大的地方在与关于intent的actions的概念。通过intent的actions,你可以简单的描述你要执行的操作的类型(并且可以有选择的描述你要处理的数据),可以允许系统在device中找到这个组件并启动它。如果有多个组件可以执行intent中描述的action,这时用户就可以选择一个来执行。
系统可以识别能对某intent做出反应的方式是通过将接收到的intent和设备
中其他程序的manifest文件的intent filters进行比较实现的。
当你在程序的manifest文件中声明一个组件之后,你可以有选择包含
intent filters,这些intent filters表明了组件对接收自其他程序的intent做出反应的能力(capabilities)。你可以通过添加一个
a child of the component's declaration element来为你的程序声明一个intent filter。
比如,在一个邮件程序中的一个activity可以编写新的邮件,这样的话你就
需要在manifest文件中来声明一个intent filter来对“发送”intent响应(为了发送邮件)。这样,在你的程序中,一个activity就可以创建一个发送
intent(ACTION_SEND),这样当你调用startaActivity()时,系统就会匹配邮件程序中的发送activity并启动它。
更多关于创建intent filters的内容,可以参看Intents and Intent Filter文档。
8
声明运行程序所需的条件
Andorid系统可以支持很多不同的设备,并且这些设备的性能特征并不相同。
为了防止你的程序被安装在不能正常运行你的程序的较低android系统版本上,通过在manifest文件中声明你的程序支持的设备和软件,便变得尤其重要起来。大多数的这些声明仅是一些信息,而系统并不会读取它们,但是其他的服务比如Android Market却会阅读这些声明来帮助通过通过自己的设备搜索软件的用户过滤软件。
比如,你的程序需要照相机,并且使用的Android2.1的APIs,那么你就必须
在你的manifest文件中声明这些需要。这样的话,在Android Market上,没有照相机或者Android系统版本低于2.1将不能安装你的程序。
然而,如果你的程序不需要照相机,你仍可以声明你需要照相机。这种情况
下,你的程序必须在运行时做一下检查,来检查这个设备是否含有照相机,如果没有照相机可用,则系统将会使使用照相机的相关程序不能用。
下面是一些你在设计和开发你的程序时,必须要考虑的关于设备的一些重要
方面:
屏幕大小和分辨率:
为了根据屏幕的类型进行分类,Android定义了两个特征:屏幕大小和分辨率。
屏幕尺寸有: 小,中,大,超大;
屏幕分辨率类型:低分辨率,中分辨率,高分辨率,超高分辨率; 默认情况下,你的程序可以兼容所有的屏幕尺寸和分辨率,因为Android系
统对你的程序的UI布局和image资源做了适当的调整。
输入方式:
9
很多设备有不同类型的输入方式,比如键盘、轨迹球、五位元导航。如果你
的程序需要某特定形式的输入方式,则你必须在manifes文件中使用
设备配置:
有许多硬件或软件并不全在Android系统的设备上,比如,一个照相机、光
线传感器、某个版本的 OpenGL,或者屏幕的保真度(fidelity)。你在任何条件下都不能假定Android设备具备某种特性(feature)(当然得除掉Android标准库的情况),所以如果你的程序使用了某feature,则你必须使用
不同地 Android 平台设备通常运行不同版本的 Android ,比如 Android 1.6
或者 Android 2.3。每个后续版本通常包含之前版本所不支持的新增 API。 In order to indicate which set of APIs are available, 每个平台版本对应一个 API Level (例如, Android 1.0 对应于 API Level 1 , Android 2.3 对应于 API Level 9)。如果你使用任何在 1.0 版之后平台新增的 API,你应该使用
为你的应用程序声明所有这些要求至关重要,因为,当你在 Android Market
上发布你的应用程序时,Market 使用这些声明来过滤该应用程序是否对于每台设备可用。 这样,你的应用程序仅对能够满足你的应用程序要求的设备可用。
应用程序资源
一个应用程序不仅仅由代码组成——它需要区别于源代码的资源,比如图
片,音频文件,以及任何与应用程序视觉呈现相关联的内容。例如,你应该使用 XML 文件定义动画,菜单,风格,颜色,以及 activity 用户界面的布局。 使用应用程序资源文件,可以更容易地更新你的应用程序的特性而无需修改代码,并且 — 通过提供多套可替换资源文件 — 使您能够针对各种设备配置优化你的应用程序(比如不同语言或屏幕大小)。
10