转自: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或更低的版本,那么这些运行旧的平台版本的设备会简单忽略掉这个元素。

注意:在声明一个功能时,要记住必须申请相应的权限。例如,在应用程序能够访问Camera的API之前,必须申请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) (转载)的更多相关文章

  1. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...

  2. AndroidManifest.xml文件详解(uses-permission)

    语法(SYNTAX): <uses-permissionandroid:name="string"/> 被包含于(CONTAINED IN): <manifest ...

  3. AndroidManifest.xml文件详解

    本文为安全专家李洋的最新一篇专栏文章<AndroidManifest.xml文件详解>.AndroidManifest.xml是一个跟安全相关的配置文件,该配置文件是Android安全保障 ...

  4. AndroidManifest.xml文件详解(meta-data)

    http://blog.csdn.net/think_soft/article/details/7567189 语法(SYNTAX): <meta-dataandroid:name=" ...

  5. 【Android 复习】:AndroidManifest.xml 文件详解

    <?xml version="1.0" encoding="utf-8"?> <!-- package 包表示整个Android应用程序的主要 ...

  6. AndroidManifest.xml文件详解(activity)(一)

    <activity android:allowTaskReparenting=["true" | "false"] android:alwaysRetai ...

  7. AndroidManifest.xml文件详解(application)

    http://blog.csdn.net/think_soft/article/details/7557101 语法(SYNATX): <application android:allowTas ...

  8. AndroidManifest.xml文件详解(permission-group)

    http://blog.csdn.net/think_soft/article/details/7578760 语法(SYNTAX): <permission-groupandroid:desc ...

  9. AndroidManifest.xml文件详解(permission)

    http://blog.csdn.net/think_soft/article/details/7574726 语法(SYNTAX): <permissionandroid:descriptio ...

随机推荐

  1. python遍历两个列表,若长度不等,用None填充

    zip经常会遇到截断问题,如:a = [1,2,3], b = [4,5,6,7],则zip(a,b) = [(1, 4), (2, 5), (3, 6)] 可考虑使用map: map(lambda ...

  2. Coursera 机器学习Course Wiki Lecture Notes

    https://share.coursera.org/wiki/index.php/ML:Main 包含了每周的Lecture Notes,以便复习回顾的时候使用.

  3. html中&lt;li&gt;&lt;/li&gt;中使用&lt;br&gt;和&lt;li&gt;&lt;/li&gt;外面使用&lt;br&gt;

    </pre><pre> <!DOCTYPE html> <html> <head> <meta http-equiv="Co ...

  4. android-----JNI中的log打印

    1. 导入log头文件 在你使用的 .c/ .cpp 文件中 导入 log.h 头文件 #include<android/log.h> 2.在Android.mk 中 加上 LOCAL_L ...

  5. Loadrunner IP欺骗

    一.为什么要设置IP欺骗 1. 当某个IP的訪问过于频繁,或者訪问量过大时,server会拒绝訪问请求.这时候通过IP欺骗能够添加訪问频率和訪问量,以达到压力測试的效果. 2. 某些server配置了 ...

  6. C#语言 语句

    //有一组函数: //y=x(x<1) //y=2x-1(1<=x<10) //y=3x-11(x>=10) //括号内是x的满足条件 //实现功能,随意输出x /*Conso ...

  7. LINQ体验(18)——LINQ to SQL语句之视图和继承支持

    视图 我们使用视图和使用数据表类似,仅仅需将视图从"server资源管理器/数据库资源管理器"拖动到O/R 设计器上,自己主动能够创建基于这些视图的实体类.我们能够同操作数据表一样 ...

  8. 答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}

    答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}    

  9. 如何解决Windows的端口占用问题?

    已知某应用在启动时会创建服务套接字,并将其绑定至端口8888,然而端口8888已被占用,如何解除占用? 以下为解决方案: 在cmd中运行netstat -ano|findstr 8888,其中的参数8 ...

  10. golang基础-WaitGroup、kafka消费者

    kafka消费者 以下博客是通过生产者创建.发送消息至kafka 博客链接 现在我们站在消费者的角度,来进行收取消息 package main import ( "fmt" &qu ...