- 浏览: 82764 次
- 性别:
- 来自: 福建
文章分类
- 全部博客 (64)
- android (28)
- androidApp (1)
- GphonePlay (0)
- [随笔分类][00]JavaScript (2)
- [随笔分类][01]Spring (3)
- [随笔分类][02]Hibernate (4)
- [随笔分类][03]EXT (4)
- [随笔分类][04]项目工程 (0)
- [随笔分类][06]数据库 (1)
- [随笔分类][07]软件使用 (5)
- [随笔分类][09]Ophone (1)
- [随笔分类][08]SSH整合 (3)
- [随笔分类][13]生活随笔 (1)
- [随笔分类][15]架构与设计 (2)
- [随笔分类][16]Weekly Updates (0)
- [随笔分类][17]自我提高 (2)
- [随笔分类][18]中间件 (1)
- [随笔分类][20]测试 Debug Junit (1)
- [随笔分类][21]软件工程 (1)
- [随笔分类][22]团队合作与管理 (1)
最新评论
-
lcyaiym:
不错 ,我正在研究这个问题了。
使用Intent Filter来响应隐式Intent -
qiaoweishu:
精辟深刻,很是受益!
软件开发的精益理念 -
qiaoweishu:
吟安一个字,捏断数径须!受教了!
怎样成为优秀的软件模型设计者 -
lnx1824:
先巩固现有的j2ee,过段时间再来学习!
android HelloWord -
gryphone:
似乎并不存在实际上的匿名 其实系统也是按照对应的string ...
Android如何解析Intent Filter
每一个
Android应用程序包含一个manifest文件——AndroidManifest.xml,保存在工程的根目录中。该文件定义了应用程序的结构和元数据以及它们的组件。
它包含组件(Activity,Service,Content Provider和Broadcast Receiver)的节点,这些组件构成了整个应用程序。并且使用Intent Filter和Permission,来决定如何相互影响以及对其他应用程序的影响。
它同样提供了特性来指定应用程序的元数据(像icon或者theme等),另外,还提供了高层节点用来安全设定和单元测试。如下描述:
manifest文件由<manifest/>标签作为根,包含了package特性,来设定工程的包名。它通常还包含xmlns:android特性,来导入命名空间,提供一些系统特性。一个典型的manifest节点如下面的XML片段所示:
<manifest xmlns:android=http://schemas.android.com/apk/res/android package=”com.my_domain.my_app”> [ ... manifest nodes ... ] </manifest>
<manifest/>标签包含了应用程序组成部分们的节点,它们是应用程序的组件,安全设定和测试类。下面的列表给出了可获得的manifest标签节点的概要以及XML片段的演示:
❑ application
manifest文件只能包含一个application节点。通过特性设定,指明了应用程序的title,icon,theme等元数据。同时,它又可以表现为一个容器,容纳Activity,Service,Content Provider,Broadcast Receiver的标签。
<application android:icon=”@drawable/icon” android:theme=”@style/my_theme”> [ ... application nodes ... ] </application>
❑ activity
应用程序中显示的Activity都需要定义一个activity标签,通过android:name特性来指定类名。它必须包含启动Activity和其他一些屏幕或对话框中用到的Activity。尝试启动一个没有在manifest中定义的Activity会引发一个运行时异常。每一个Activity节点支持intent-filter子标签来指定哪些Intents启动Activity。
<activity android:name=”.MyActivity” android:label=”@string/app_name”> <intent-filter> <action android:name=”android.intent.action.MAIN” /> <category android:name=”android.intent.category.LAUNCHER” /> </intent-filter> </activity>
❑ service
和activity标签一样,为应用程序中用到的Service(Service的细节将在第8章描述)类定义一个service标签。service标签同样支持Intents-filter子标签,用来允许后期运行时的绑定。
<service android:enabled=”true” android:name=”.MyService”></service>
❑ provider
provider标签用来标明应用程序中的Content Provider。Content Provider用来管理数据库的存取以及应用程序间的共享(第6章中有练习)。
<provider android:permission=”com.paad.MY_PERMISSION” android:name=”.MyContentProvider” android:enabled=”true” android:authorities=”com.paad.myapp.MyContentProvider”> </provider>
❑ receiver
通过添加receiver标签,你可以在还未启动应用程序之前注册一个Broadcast Receiver。如你在第5章中所见,Broadcast Receiver就像一个全局的事件监听者,一旦注册,就会在应用程序广播相应的Intents时执行。通过在manifest中注册Broadcast Receiver,当相应的Intent被广播了,应用程序就会自动地启动,并且注册的Broadcast Receiver会运行。
<receiver android:enabled=”true” android:label=”My Broadcast Receiver” android:name=”.MyBroadcastReceiver”> </receiver>
❑ uses-permission
作为安全模型的一部分,uses-permission标签申明了应用程序正确运作所需要的授权。这些授权,包括在安装期间用户是否有权操作。设备本身中包含的许多Android服务需要授权,尤其是那些需要花钱或安全相关的服务(例如电话,收发SMS,或使用本地的服务等)。如下所示,第三方程序,包括你的,在提供共享的程序组件的使用权力之前都可以指定授权。
<uses-permission android:name=”android.permission.ACCESS_LOCATION”> </uses-permission>
❑ permission
在你限制应用程序组件的使用之前,你需要在manifest文件中定义一个授权。使用permission标签创建授权定义。应用程序组件通过增加android:permission特性来使用它。其他应用程序在使用那些后保护的组件之前,也需要在各自的manifest文件中包含uses-permission。
使用permission标签,你可以指定授权的等级(normal, dangerous, signature, signatureOrSystem),标签以及描述(定义在外部资源的字符串,解释得到授权的风险)等。
<permission android:name=”com.paad.DETONATE_DEVICE” android:protectionLevel=”dangerous” android:label=”Self Destruct” android:description=”@string/detonate_description”> </permission>
❑ instrumentation
Instrumentation类为运行时测试Activity和Service提供了框架。它们提供了钩子,用来监视应用程序以及和系统资源的交互。为程序中定义的测试类创建节点。
<instrumentation android:label=”My Test” android:name=”.MyTestClass” android:targetPackage=”com.paad.aPackage”> </instrumentation>
关于manifest和每个节点的更加详细描述参见:
http://code.google.com/android/devel/bblocks-manifest.html
ADT的新工程向导在创建新工程的同时自动的创建了manifest文件。当你为应用程序引入新的组件时,才会回到manifest文件中来。
发表评论
-
Android如何解析Intent Filter
2009-08-23 19:31 2183匿名性质的运行时绑定 ... -
使用Intent Filter来响应隐式Intent
2009-08-23 19:14 4007如果一个Intent请求在一片数据上执行一个动作,Androi ... -
Linkify介绍
2009-08-23 17:21 3339Linkify是一个辅助类,通过RegEx样式匹配,自动地在T ... -
动态更新菜单项与处理菜单选择
2009-08-23 15:55 1485public boolean onOptionsItemS ... -
菜单项选项
2009-08-23 15:35 1220正如你所熟悉的那样,Android支持大多数传统的菜单项选项, ... -
Android菜单系统介绍
2009-08-23 15:09 1533如果你曾经尝试用手写 ... -
Layouts介绍
2009-08-23 15:05 1304Layout管理器(一般称“layouts”)是ViewGro ... -
实时改变配置
2009-08-23 15:03 997Android通过终止、重启应用程序来重新加载资源文件,以做到 ... -
使用系统资源
2009-08-23 15:00 871Android本体应用程序具体 ... -
在资源中引用资源
2009-08-23 14:59 792在资源中引用资源 你可以在其他XML资源中通过特性来引 ... -
在代码中使用资源
2009-08-23 14:58 1172在代码中使用资源 你可以在代码中通过R静态类使用资源 ... -
Animations
2009-08-23 14:55 889Animations Android支持2种类型的动画 ... -
Layouts
2009-08-23 14:53 769Layouts Layout资源是通过在XML中设计U ... -
Styles和Themes
2009-08-23 14:51 679Styles和Themes 通过指定Views的特性值 ... -
Drawables
2009-08-23 14:50 1034Drawables Drawable资源包括位 ... -
Values
2009-08-23 14:46 1304<?xml version=”1.0” encoding ... -
资源具体化
2009-08-23 14:44 735不管你使用什么开发环境,一个良好的习惯就是保存非代码的资源(像 ... -
理解应用程序优先级和进程状态
2009-08-23 14:43 996杀死哪个进程来回收资源由进程中的应用程序的优先级决定的。应用程 ... -
使用Manifest Editor
2009-08-23 14:42 994ADT插件程序包含了一个可视化的Manifest Editor ... -
android 组件之广播接收( Broadcast receiver )
2009-08-22 16:06 4136Broadcast receivers 广播接收? ...
相关推荐
[VS2005]解决“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题” 今天在准备发布用VS2005写的那个程序时,拷贝到我同事机器上,双击突然出现了“由于应用程序的配置不正确,...
VC使用xpstyle.manifest,能让VC应用程序变为XP风格。使用方法见压缩包。
应用程序缓存三个优点: 1,离线浏览 - 用户可在应用离线时使用它们 2,速度 - 已缓存资源加载得更快 3,减少服务器负载 - 浏览器将只从...如需启用应用程序缓存,请在文档的 <html> 标签中包含 manifest 属性:
android应用程序开发manifest.xml详解
steam-appmanifest, 在 ~/.steam/steam/SteamApps 中,生成 appmanifest_APPID.acf 文件 Steam AppManifest生成器这是一个简短的python 脚本,可以让 Steam 下载到下载非Linux应用程序中。注:Steam 不会运行没有...
VB用两种方法实现win7风格的窗体界面,一种是使用manifest 文件实现,另一种是使用Res资源文件实现,XP风格的manifest文件和win7风格的manifest文件不同,请不要混用,另外请使用5.0版的Microsoft.Windows.Common-...
前端开源库-web-app-manifest-loaderWeb应用程序清单加载程序,Web包的Web应用程序清单加载程序
应用程序基础Application Fundamentals 4 关键类 4 应用程序组件 5 激活组件:intent 7 关闭组件 7 manifest文件 8 Intent过滤器 8 Activity和任务 10 Affinity(吸引力)和新任务 11 加载模式 12 清理堆栈 13 启动...
主要介绍了Html5应用程序缓存(Cache manifest)的相关资料,可以优化加载速度,节约服务器资源。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java -jar target/manifest-merger-jar-with-dependencies.jar --main mainAndroidManifest.xml --log [VERBOSE, INFO, WARNING, ERROR] --libs [path separated list of lib's manifests] --overlays [path ...
天蓝色分配将应用程序角色分配给Azure Active Directory应用程序的安全组v0.0.7设想您有一个Azure Active Directory(Azure AD)应用程序,并且已通过添加应用程序角色修改了该应用程序的manifest.json文件。...
Android应用程序的升级(自身升级)全部过程,包括服务器端的配置,采用的是json方式
第6章 使用Android Manifest文件定义应用程序 第7章 管理应用程序资源 第三部分 Android用户界面设计精髓 第8章 探索用户界面屏幕元素 第9章 使用布局设计用户界面 第10章 使用Fragment 第11章 ...
cordova-app-loader, 远程更新你的Cordova应用程序 cordova-app-loader 远程更新你的Cordova应用程序为你的应用程序写一个英镑的manifest.json,以英镑为单位。构建和部署应用程序。过了一会儿。向服务器上传更新( ...
在程序升级/维护过程中,版本...Android系统会对程序manifest中描述的系统版本(minSdkVersion特性指定)进行检查。这样,应用程序可以指定兼容的最低系统API等级。了解更多信息,请参考“指定程序的系统API等级”。
VC6应用程序实现XP风格: 在每一个你想改为XP风格的程序的统一目录里建立该文件,并把名字改为可执行文件的名字加上".manifest"的扩展名(注意不要把应用程序的后缀名exe去掉)
某个应用程序想让用户决定是不是在开机时启动,用户选择是,这个应用程序就接收boot completed 广播,用户选择否,这个程序就不接收boot completed广播。可是由于receiver是注册在manifest文件中,怎样让它在手机...
在这里,我们展示了免费应用程序和付费应用程序的示例演示。为此,我们需要开发两个应用程序,一个是免费的,另一个是付费的 我们应该在免费的应用程序中添加所有功能,然后我们可以锁定需要在付费版本中启用的某些...
当您创建一个intent的时候,您必须指定您想让intent触发的行为。Android定义了若干行为,包括ACTION_SEND。您可能猜到了,ACTION_SEND...相对的,您可以在manifest里声明您的应用能够支持的,从其他应用接收的数据类型。