AndroidManifest.xml文件详解(uses-feature)

摘要:
此元素用于声明应用程序使用的单独硬件或软件功能。此元素提供的required属性允许您指定当应用程序的所需函数不存在时,应用程序声明的可用函数集对应于Android的PackageManager类定义的一组可用函数常量。该元素要求设备中具有蓝牙和摄像头功能的应用程序声明应用程序所需的所有功能。

http://blog.csdn.net/think_soft/article/details/7596796

语法(SYNTAX):

<uses-featureandroid:name="string"
              android:required=["true" | "false"]
              android:glEsVersion="integer"/>

被包含于(CONTAINED IN):

<manifest>

说明(DESCRIPTION):

这个元素用于声明一个单独的被应用程序使用的硬件或软件功能。

<uses- feature>声明的目的是通知其他外部实体,该应用程序所依赖的硬件和软件功能。这个元素提供的required属性会让你指定应用程序在所需 的功能不存在时,应用程序是否能够正常运行。因为功能能够所支持的Android设备不同,所以<uses-feature>元素被用于描述 应用程序所依赖的、重要的、可用的设备功能。

应用程序所声明的一组可用功能对应着一组由Android的PackageManager类定义的可用的功能常量,为了方便,这些常量会在《Google Play和基于功能的过滤》的“功能参考”表中被列出。

如果应用程序需要多个功能,就要分别使用<uses-feature>元素来指定所需的每一个功能,例如:需要设备中带有蓝牙和camera功能的应用程序,要声明两个<uses-feature>元素:

<uses-feature android:name="android.hardware.bluetooth" />
<uses-feature android:name="android.hardware.camera" />

通常应该确保使用<uses-feature>元素来声明应用程序所需的所有功能。

被声明的<uses-feature>元素只是信息化的,这意味着Android系统本身在安装应用程序之前,不会检查设备上所支持的功能的匹配性。但是其他的服务(如Google Play)或应用程序可以检查该应用程序的<uses-feature>声明,把它作为与该应用程序交互的一部分。由于这个原因,声明应用程序要使用的所有的外部功能是至关重要的。

对于某些功能,有可能存在一个特定的属性,以便定义功能的版本,如被使用的Open GL的版本(用glEsVersion来声明)。而有些功能则不需要指定版本属性,如照相机,就只使用name属性来声明。

尽管<uses-feature>元素只在运行API Level 4或更高的版本上才有效,但是还是推荐在所有的应用程序中包含这个元素,即使minSdkVersion的值是3或更低的版本,那么这些运行旧的平台版本的设备会简单忽略掉这个元素。

注意:在声明一个功能时,要记住必须申请相应的权限。例如,在应用程序能够访问CameraAPI之前,必须申请CAMERA权限。申请权限是让应用程序能够访问相应的软/硬件,而声明应用程序所使用的功能是为了确保正确的设备兼容性。

属性(ATTRIBUTES):

android:name

这个属性用描述性的字符串,指定该应用程序所使用的软/硬件功能。有效描述符在《Google Play和基于功能的过滤》的“硬件功能”和“软件功能”表中被列出。

android:required

这个属性用一个布尔值来指定应用程序是否需要在android:name属性中所指定的功能。

true:在设备上不存在指定的功能时,则该应用不能够正常运行。

false:如果设备上存在指定的功能,则应用程序会倾向使用这个功能,但是如果需要,也可设计成没被指定的功能也能够正常运行。

如果没有声明,这个属性的默认值是true。

android:qlEsVersion

这个属性用于声明应用程 序所需要的OpenGL ES的版本。它的高16位代表主版本号,低16位代表次要版本号,如:要是指定OpenGL ES的版本号是2.0,那么就要设置为0x00020000。要指定的OpenGL ES的版本号是2.1,就要设置为0x00020001。

应用程序在它的清单中应该最多只能指定一个android:glEsVersion属性,如果指定了多个,那么只会使用版本最高的那个android:glEsVersion属性,而其他的将会被忽略。

如果应用程序没有指定一个android:glEsVersion属性,那么就假定应用程序仅需要OpenGL ES1.0,它是在所有的Android设备上都支持的版本。

应用程序能够假设,如果一个平台支持设定的OpenGL ES版本,那么它还会支持所有被设定版本低的OpenGL ES版本,因此,需要OpenGL ES1.0和OpenGL ES2.0的应用程序,必须要指定它所需要的版本时OpenGL ES2.0。

能够用任何版本的OpenGL ES来工作的应用程序,应该仅指定应用所需的最低版本的OpenGL ES。(应用程序能够在运行时检查较高版本的OpenGL ES是否可用。)

被引入的版本(INTRODUCED IN):

API Level 4

免责声明:文章转载自《AndroidManifest.xml文件详解(uses-feature)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【2052】猴子选大王聚类-31省市居民家庭消费水平-city下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

idea开启springboot热部署,修改文件即时生效

  在开发中如何使idea在不重启项目时,修改文件后能够即时编译更新,是一个关键问题。 step01:加入devtool依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-...

百度地图API初体验和偏移纠正方法

      最近的项目想做一个在可以通过手持设备获取经纬度,然后在地图上进行标注显示的功能,因为还在技术调研阶段,所以决定先使用百度地图或Google Maps的API来做Demo。通过网上的一些资料和自己对于Google和百度地图的使用,对这两个地图做了一些简单的对比,结论是很明显的——Google在技术水平和成熟度上都要比百度高很多,可以说完全不在一个...

vue(初探预渲染)

---恢复内容开始---  一、前言                                                                                                     1、简介预渲染                     2、案例演示(不配置预渲染)                  ...

纯css3 实现的焦点图

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>six</title> <script type="text/javascript" src="https://qunarzz.com/jque...

SpringBoot整合c3p0、Druid数据库连接池

1、C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展,同时在Hibernate、Spring项目开发中被广泛应用。修改项目的pom.xml配置文件,添加C3P0依赖支持管理,由于要连接mysql,所以也要加入mysql的依赖包,如下所示: 1 <?xml version="1.0" enco...

桌面小部件开发

AppWidgetProvider是android提供实现桌面小部件的类,本质是一个广播,即BroadcastReceiver。是继承关系 开发步骤: 1.在res/layout/下新建一个XML文件,命令为widget.xml,名称和内容可以自定义 <?xml version="1.0" encoding="utf-8"?> <Lin...