`

android 机器人:应用程序Manifest介绍

阅读更多

每一个Android应用程序包含一个manifest文件——AndroidManifest.xml,保存在工程的根目录中。该文件定义了应用程序的结构和元数据以及它们的组件。

  

它包含组件(ActivityServiceContent ProviderBroadcast Receiver)的节点,这些组件构成了整个应用程序。并且使用Intent FilterPermission,来决定如何相互影响以及对其他应用程序的影响。

 

它同样提供了特性来指定应用程序的元数据(像icon或者theme等),另外,还提供了高层节点用来安全设定和单元测试。如下描述:

manifest文件由<manifest/>标签作为根,包含了package特性,来设定工程的包名。它通常还包含xmlns:android特性,来导入命名空间,提供一些系统特性。一个典型的manifest节点如下面的XML片段所示:

 

Java代码 
  1. <manifest xmlns:android=http://schemas.android.com/apk/res/android  
  2.   
  3. package=”com.my_domain.my_app”>  
  4.   
  5. [ ... manifest nodes ... ]  
  6.   
  7. </manifest>  

 

<manifest/>标签包含了应用程序组成部分们的节点,它们是应用程序的组件,安全设定和测试类。下面的列表给出了可获得的manifest标签节点的概要以及XML片段的演示:

 

 application

manifest文件只能包含一个application节点。通过特性设定,指明了应用程序的titleicontheme等元数据。同时,它又可以表现为一个容器,容纳ActivityServiceContent ProviderBroadcast Receiver的标签。

 

Java代码 
  1. <application android:icon=”@drawable/icon”  
  2.   
  3. android:theme=”@style/my_theme”>  
  4.   
  5. [ ... application nodes ... ]  
  6.   
  7. </application>  

 

 activity

应用程序中显示的Activity都需要定义一个activity标签,通过android:name特性来指定类名。它必须包含启动Activity和其他一些屏幕或对话框中用到的Activity。尝试启动一个没有在manifest中定义的Activity会引发一个运行时异常。每一个Activity节点支持intent-filter子标签来指定哪些Intents启动Activity

Java代码 
  1.  <activity android:name=”.MyActivity” android:label=”@string/app_name”>  
  2.   
  3. <intent-filter>  
  4.   
  5. <action android:name=”android.intent.action.MAIN” />  
  6.   
  7. <category android:name=”android.intent.category.LAUNCHER” />  
  8.   
  9. </intent-filter>  
  10.   
  11. </activity>  

  

 service

activity标签一样,为应用程序中用到的ServiceService的细节将在第8章描述)类定义一个service标签。service标签同样支持Intents-filter子标签,用来允许后期运行时的绑定。

Java代码 
  1. <service android:enabled=”true” android:name=”.MyService”></service>  

 

 provider

provider标签用来标明应用程序中的Content ProviderContent Provider用来管理数据库的存取以及应用程序间的共享(第6章中有练习)。

 

Java代码 
  1. <provider android:permission=”com.paad.MY_PERMISSION”  
  2.   
  3. android:name=”.MyContentProvider”  
  4.   
  5. android:enabled=”true”  
  6.   
  7. android:authorities=”com.paad.myapp.MyContentProvider”>  
  8.   
  9. </provider>  

 

 receiver

通过添加receiver标签,你可以在还未启动应用程序之前注册一个Broadcast Receiver。如你在第5章中所见,Broadcast Receiver就像一个全局的事件监听者,一旦注册,就会在应用程序广播相应的Intents时执行。通过在manifest中注册Broadcast Receiver,当相应的Intent被广播了,应用程序就会自动地启动,并且注册的Broadcast Receiver会运行。

 

Java代码 
  1. <receiver android:enabled=”true”  
  2.   
  3. android:label=”My Broadcast Receiver”  
  4.   
  5. android:name=”.MyBroadcastReceiver”>  
  6.   
  7. </receiver>  

 

 uses-permission

作为安全模型的一部分,uses-permission标签申明了应用程序正确运作所需要的授权。这些授权,包括在安装期间用户是否有权操作。设备本身中包含的许多Android服务需要授权,尤其是那些需要花钱或安全相关的服务(例如电话,收发SMS,或使用本地的服务等)。如下所示,第三方程序,包括你的,在提供共享的程序组件的使用权力之前都可以指定授权。

 

Java代码 
  1. <uses-permission android:name=”android.permission.ACCESS_LOCATION”>  
  2.   
  3. lt;/uses-permission>  

 

 permission

在你限制应用程序组件的使用之前,你需要在manifest文件中定义一个授权。使用permission标签创建授权定义。应用程序组件通过增加android:permission特性来使用它。其他应用程序在使用那些后保护的组件之前,也需要在各自的manifest文件中包含uses-permission

使用permission标签,你可以指定授权的等级(normal, dangerous, signature, signatureOrSystem),标签以及描述(定义在外部资源的字符串,解释得到授权的风险)等。

 

Java代码 
  1. <permission android:name=”com.paad.DETONATE_DEVICE”  
  2.   
  3. android:protectionLevel=”dangerous”  
  4.   
  5. android:label=”Self Destruct”  
  6.   
  7. android:description=”@string/detonate_description”>  
  8.   
  9. </permission>  

 

 instrumentation

Instrumentation类为运行时测试ActivityService提供了框架。它们提供了钩子,用来监视应用程序以及和系统资源的交互。为程序中定义的测试类创建节点。

 

Java代码 
  1. <instrumentation android:label=”My Test”  
  2.   
  3. android:name=”.MyTestClass”  
  4.   
  5. android:targetPackage=”com.paad.aPackage”>  
  6.   
  7. </instrumentation>  

 

关于manifest和每个节点的更加详细描述参见:

http://code.google.com/android/devel/bblocks-manifest.html

 

ADT的新工程向导在创建新工程的同时自动的创建了manifest文件。当你为应用程序引入新的组件时,才会回到manifest文件中来。

 

分享到:
评论

相关推荐

    机器人小程序

    它的应用程序主要由Java语言编写,通过Android SDK(软件开发工具包)和Android Studio进行开发。这个“机器人小程序”很可能就是使用了这些工具和技术来构建的。 其次,对话系统的实现通常涉及到自然语言处理(NLP...

    android usb accessory

    当Arduino作为Android的USB accessory时,开发者可以通过编写Android应用程序来控制和读取Arduino的数据,实现各种创新的交互功能,比如控制机器人、读取传感器数据、创建音乐仪器等。 要实现Android与Arduino之间...

    Android应用基础培训.zip

    在Android应用基础培训中,您将深入学习到Android应用程序开发的核心概念和技术,这些知识是成为一名合格的Android开发者所必需的。下面将详细讲解这个领域的关键知识点。 1. **Android系统架构**:Android系统是一...

    public-dashboard-android:用于公共仪表板的 Android 应用程序

    "public-dashboard-android" 这个标题表明我们正在讨论的是一个专门为公共仪表板设计的Android应用程序。这通常意味着该应用可能用于展示实时数据、统计数据或者关键指标,适用于公共场所如会议室、展览厅或者公共...

    Android开发指南中文版

    《Android开发指南中文版》是针对Android SDK 1.5版本的应用程序框架部分进行的翻译,旨在为开发者提供全面的Android应用开发基础知识。该指南涵盖了从应用程序基础到关键类、组件、Intent机制、Manifest文件、...

    Android-chapter01.ppt

    中间层包括函数库和Android运行时,函数库提供了一系列基于C/C++的功能,如Surface Manager用于支持显示系统,而Android运行时则包含了Dalvik或ART虚拟机,用于执行应用程序。 至于Android开发环境的搭建,这通常...

    android:MyRobotLab 的 android 版本

    2. **Android应用程序架构**:了解Android应用的基本结构至关重要,包括Activity、Service、BroadcastReceiver和ContentProvider等组件。MyRobotLab的Android实现可能包含这些组件,用于处理用户界面、后台任务、...

    安卓聊天程序源代码

    这个项目不仅包含了源代码,还提供了一个apk安装文件,使得用户可以直接在安卓设备上运行和体验应用程序。 在深入探讨这个项目之前,我们需要了解几个关键概念: 1. **安卓(Android)**:这是一个开源的操作系统...

    ghost-android:适用于Android的GHOST移动客户端

    1. **Android开发**:项目基于Android平台,开发者需要熟悉Android SDK、Android Studio、以及Android应用程序架构,如Activity、Fragment、Intent等。 2. **Java编程**:项目使用Java语言,开发者需要掌握Java基础...

    安卓 Andorid录音+变声+转mp3

    在安卓(Android)平台上开发一款...开发这样的应用,除了上述技术知识,还需要了解Android应用程序的生命周期、UI设计原则、调试技巧以及性能优化方法。此外,为了保证用户体验,还需要考虑音频质量和系统兼容性问题。

    基于Android的“创意科普”APP的开发与应用.pdf

    在需求分析部分,主要对应用程序的整个模块进行划分和功自设计。系统需求分析包括科普知识的筛选与过滤、智能机器人聊天系统和答题系统的实现。使用Java语言构建系统框架,并将APP连接SQLite数据库。 在系统总体...

    chatbot app.zip

    uniapp是一个跨平台的开发工具,允许开发者用一套代码实现多平台的应用程序,包括iOS、Android以及H5等。 【描述】中提到的链接指向了一个CSDN博客文章,虽然具体内容无法在这里直接引用,但根据链接可以推测,该...

    Developpement Based on Component as EJB

    在Android开发中,组件化开发是一种常见的架构设计方式,它基于EJB(Enterprise JavaBeans)的概念,将应用程序拆分为可重用、独立的组件。"Developpement Based on Component as EJB"指的是在Android环境中,借鉴...

    用免费短信验证码SDK实现手机注册验证功能.zip_手机注册验证_手机验证_短信注册_短信验证码

    SDK是一系列预先编写的软件工具,供开发者在创建应用程序时使用,通常包括库、文档、示例代码和调试工具等。对于短信验证码服务,SDK提供了一套接口,使得开发者能够方便地在应用中集成发送和验证短信的功能。 选择...

    CandyRobot:这是一个智能机器人

    CandyRobot是一个独特的项目,它代表了一种智能化的机器人应用。这个项目的命名或许源于其甜美的代号,暗示着它如同糖果一样吸引人,但实际上,它的功能却可能带有某种神秘的吸引力。在深入探讨CandyRobot之前,我们...

    自动获取短信验证码并填充以及倒计时

    在Android系统中,需要在Manifest.xml中声明相应的权限,并在运行时请求用户授权。iOS则通过特定的API接口来监听短信的接收。开发过程中,需要监听短信数据库的变化,一旦接收到新短信且内容符合验证码格式,就自动...

Global site tag (gtag.js) - Google Analytics