<uses-configuration>

语法:
<uses-configuration
android:reqFiveWayNav=["true" | "false"]
android:reqHardKeyboard=["true" | "false"]
android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />

  

包含于:
<manifest>
说明:
指示应用所需的硬件和软件功能。例如,应用可能会指定它需要物理键盘或特定的导航设备(如轨迹球)。该规范用于避免将应用安装在它无法正常运行的设备上。

注意:大多数应用都不会使用此清单标记。您应始终支持使用方向键输入,以便帮助视障的用户,并支持提供除触摸之外的方向键输入或者以方向键代替触摸输入的设备。如需了解如何在应用中支持方向键输入,请阅读启用焦点导航。如果您的应用在没有触摸屏的情况下完全无法正常运行,则改用 <uses-feature> 标记来声明所需的触摸屏类型,类型范围从 "android.hardware.faketouch"(表示基本的触摸样式事件)到更高级的触摸类型(如 "android.hardware.touchscreen.multitouch.jazzhand",表示多个手指的不同输入)。

属性:
android:reqFiveWayNav
应用是否需要五向导航控件 - 如果需要,则为“true”;如果不需要,则为“false”。五向控件可以将选择向上、向下、向右或向左移动,还提供调用当前选择的方式。它可以是方向键、轨迹球,也可以是其他设备。

如果应用需要方向控件(而不是特定类型的控件),则可以将此属性设置为“true”并忽略 reqNavigation 属性。不过,如果应用需要特定类型的方向控件,则可忽略此属性并改为设置 reqNavigation

android:reqHardKeyboard
应用是否需要硬件键盘 - 如果需要,则为“true”;如果不需要,则为“false”。
android:reqKeyboardType
应用所需的键盘类型(如果有)。此属性不区分硬件键盘和软件键盘。如果需要特定类型的硬件键盘,请在此处指定类型,并将 reqHardKeyboard 属性设置为“true”。

该值必须是以下字符串之一:

说明
undefined 应用不需要键盘。(未定义键盘要求。)这是默认值。
nokeys 应用不需要键盘。
qwerty 应用需要标准的 QWERTY 键盘。
twelvekey 应用需要十二键拨号键盘(如大多数手机上的此类键盘),带有从 0 到 9 数字的键以及星号 (*) 和井号 (#) 键。
android:reqNavigation
应用所需的导航设备(如果有)。该值必须是以下字符串之一:

说明
undefined 应用不需要任何类型的导航控件。(未定义导航要求。)这是默认值。
nonav 应用不需要导航控件。
dpad 应用需要用于导航的方向键。
trackball 应用需要用于导航的轨迹球。
wheel 应用需要导航轮。

如果应用需要导航控件,但控件的确切类型无关紧要,则应用可以将 reqFiveWayNav 属性设置为“true”(而不是设置此属性)。

android:reqTouchScreen
应用所需的触摸屏类型(如果有)。该值必须是以下字符串之一:

说明
undefined 应用不需要触摸屏。(未定义触摸屏要求。)这是默认值。
notouch 应用不需要触摸屏。
stylus 应用需要使用触控笔操作的触摸屏。
finger 应用需要可以用手指操作的触摸屏。

注意:如果您的应用需要某些类型的触摸输入,则应改用 <uses-feature> 标记来声明所需的触摸屏类型(从表示基本触摸样式事件的 "android.hardware.faketouch" 开始)。

<uses-library>

注意:Google Play 使用您的应用清单中声明的 <uses-library> 元素,从不符合其库要求的设备中过滤掉您的应用。如需详细了解如何过滤,请参阅 Google Play 过滤器一文。

语法:
    <uses-library
android:name="string"
android:required=["true" | "false"] />
 
包含于:
<application>
说明:
指定应用必须与之关联的共享库。此元素告知系统将库的代码添加到软件包的类加载器中。

所有 android 软件包(例如 android.appandroid.contentandroid.view 和 android.widget)都位于所有应用自动与之关联的默认库中。不过,某些软件包(例如 maps)位于未自动关联的独立库中。请参阅您使用的软件包的相关文档,确定哪个库包含软件包代码。

此元素还会影响应用在特定设备上安装以及应用在 Google Play 上的可用性:

安装
如果此元素存在并且其 android:required 属性设置为 true,则 PackageManager 框架将不允许用户安装应用,除非用户设备上存在相应的库。

下一部分详细介绍了 android:required 属性。

属性:
android:name
库的名称。此名称由您使用的软件包的文档提供。例如,“android.test.runner”是一个包含 Android 测试类的软件包。
android:required
布尔值,指示应用是否需要 android:name 指定的库:

  • "true":如果没有此库,则应用将无法正常运行。系统不允许在没有此库的设备上安装应用。
  • "false":应用可以使用此库(如果存在),但专门在没有此库的情况下运行(如果有必要)。系统允许安装应用,即使不存在此库也是如此。如果您使用 "false",则需要在运行时检查有没有此库。

    要检查库,您可以使用反射来确定有没有特定类。

默认值为 "true"

引入于:API 级别 7。

<uses-permission>

注意:在某些情况下,您通过 <uses-permission> 请求的权限可影响 Google Play 如何过滤您的应用。

如果您请求硬件相关的权限(例如 CAMERA),则 Google Play 会假设您的应用需要底层硬件功能,并从设备过滤掉不提供该功能的应用。

要控制过滤,务必在 <uses-feature> 元素中显式声明硬件功能,而不是依赖 Google Play“发现” <uses-permission> 元素中的要求。然后,如果要对特定功能停用过滤,可将 android:required="false" 属性添加到 <uses-feature> 声明中。

有关暗示硬件功能的权限列表,请参阅 <uses-feature> 元素的文档。

语法:
<uses-permission android:name="string"
android:maxSdkVersion="integer" />

  

 
包含它的文件:
<manifest>
说明:
指定用户必须授予的系统权限,以便应用正常运行。当(在运行 Android 5.1 和更低版本的设备上)安装应用或(在运行 Android 6.0 和更高版本的设备上)运行应用时,用户会授予权限。

如需了解有关权限的详细信息,请参阅简介的权限部分和单独的系统权限 API 指南。您可以在 android.Manifest.permission 中找到基础平台定义的权限列表。

属性:
android:name
权限的名称。可以是应用通过 <permission> 元素定义的权限、另一个应用定义的权限,或者一个标准系统权限(例如 "android.permission.CAMERA" 或 "android.permission.READ_CONTACTS")。如这些示例所示,权限名称通常以软件包名称为前缀。
android:maxSdkVersion
此权限应授予应用的最高 API 级别。如果从某个 API 级别开始不再需要应用所需的权限,则设置此属性非常有用。

例如,从 Android 4.4(API 级别 19)开始,应用在外部存储空间写入其特定目录(getExternalFilesDir() 提供的目录)时不再需要请求 WRITE_EXTERNAL_STORAGE 权限。但 API 级别 18 和更低版本需要此权限。因此,您可以使用如下声明,声明只有 API 级别 18 及以前版本才需要此权限:

<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />

  

 
 

这样,从 API 级别 19 开始,系统将不再向您的应用授予 WRITE_EXTERNAL_STORAGE 权限。

此属性为 API 级别 19 中的新增属性。

<uses-permission-sdk-23>

语法:
<uses-permission-sdk-23 android:name="string"
android:maxSdkVersion="integer" />

  

包含它的文件:
<manifest>
说明:
指明应用需要特定权限,但仅当应用在 Android 6.0(API 级别 23)或更高版本的设备上安装时才需要。如果设备运行的是 API 级别 22 或更低版本,则应用没有指定的权限。

当您更新应用以包含需要其他权限的新功能时,此元素很有用。如果用户在运行 API 级别 22 或更低版本的设备更新应用,系统在安装时会提示用户授予在该更新中声明的所有新权限。如果某个新功能无关紧要,您可能想同时在这些设备上停用该功能,以便用户不需要授予额外权限即可更新应用。如果使用 <uses-permission-sdk-23> 元素而非 <uses-permission>,则当应用在支持运行时权限模式(用户在应用运行时向其授予权限)的平台上运行时才可请求权限。

如需了解有关权限的详细信息,请参阅简介的权限部分和单独的系统权限 API 指南。您可以在 android.Manifest.permission 中找到基础平台定义的权限列表。

属性:
android:name
权限的名称。此权限可以是应用通过 <permission> 元素定义的权限、另一个应用定义的权限,或者一个标准系统权限(例如 "android.permission.CAMERA" 或 "android.permission.READ_CONTACTS")。
android:maxSdkVersion
此权限应授予应用的最高 API 级别。如果应用安装在 API 级别较高的设备上,则应用不会被授予权限,无法使用任何相关功能。

Android复习(三)清单文件中的元素——>uses-configuration、uses-library、uses-permission、uses-permission-sdk-23的更多相关文章

  1. [android]清单文件中MAIN与LAUNCHER的区别

    原文:[android]清单文件中MAIN与LAUNCHER的区别 MAIN 和 LAUNCHER,之前一直不注意这两个有区别,写程序的时候都放到一个filter中,前两天面试问到了,总结一下: MA ...

  2. Android Developer:合并清单文件

    使用Android Studio而且基于Gradle构建.每一个App能在多个位置包括清单文件,比如在src/main文件夹下productFlavor.库.Android ARchive(AAR) ...

  3. python 从2个文件中提取不相同的内容并输出到第三个文件中

    #-*- coding: UTF-8 -*- import re import sys import os   str1=[] str2=[] str_dump=[] fa=open("A. ...

  4. Android软键盘在清单文件中所有配置含义

    android:windowSoftInputMode 活动的主窗口如何与包含屏幕上的软键盘窗口交互.这个属性的设置将会影响两件事情: 1>     软键盘的状态——是否它是隐藏或显示——当活动 ...

  5. (备忘)android清单文件中<meta-data>标签,以及<intent-filter>下的<data>标签及其他标签

    1.metadata可以写在application下也可以写在activity下,作为全局或activity内共享的数据 以键值对形式保存 <meta-data android:name=&qu ...

  6. Android ---------- 清单文件中Activity常规设置

    <activity android:name="xxxxx" android:alwaysRetainTaskState="true" android:c ...

  7. Android 的四大组件都需要在清单文件中注册吗?

    Activity . Service . ContentProvider 如 果 要 使 用 则 必 须 在 AndroidManifest.xml 中 进 行 注 册 , 而BroadcastRec ...

  8. struts.xml文件中package元素的各大属性讲解

    Struts2中的包: Struts2使用包来组织Action,将Action放在包下来定义,通过package元素配置一个包,通过package的子元素action来定义一个Action: Stru ...

  9. Android笔记——在布局文件中插入另一个布局文件

    假如有一个布局文件A.xml想把另外一个布局文件B.xml引进其布局,则可以通过下面的代码 <include layout="@layout/B" />

  10. Examples_06_02(android)DDMS的data文件中没有显示文件。

    以前这里不显示music.cfg.通过Reset adb,就显示了. 查看虚拟机运行时里面的文件,进入adb.exe目录: E:\TDDOWNLOAD\adt-bundle-windows-x86-2 ...

随机推荐

  1. 【Mybatis】08 ResultMap、Association、分步查询、懒加载

    ResultMap自定义结果集 可以把查询返回的结果集封装成复杂的JavaBean对象 原来的ResultType属性,只能把查询到的结果集转换为简单的JavaBean 什么是简单的JavaBean对 ...

  2. 【Dos-BatchPrograming】02

    学习参考: https://www.bilibili.com/video/BV1Qv411q7bN?p=2 --1.算数运算 使用Windows终端进行运算操作时需要声明对应的命令: set /a 运 ...

  3. 【Tutorial C】08 函数 Function

    函数的定义 C源程序是由函数组成的. 最简单的程序有一个主函数 main(),但实用程序往往由多个函数组成, 由主函数调用其他函数,其他函数也可以互相调用. 函数是C源程序的基本模块,程序的许多功能是 ...

  4. wandb原来是可以网络直连的,国内可以无障碍使用

    一直不是很常使用神经网络训练可视化的工具,包括:tensorboard,等等,wandb平时也是直接就忽略,不过最近无意间看了看这个效果,感觉还是不错的,于是尝试了一下. 网上很多人说这个工具服务器在 ...

  5. Auto.js 入门教程

    嗨嗨嗨~~~ 好久没有更新博客了,主要是人变懒了 最近业余有点时间 ,想找点好玩的.自动化脚本让我很感兴趣 既能体验手机自动做事的成就感 又能学习新的东西,挺不错.说干就干 近期主要考察了两个自动化脚 ...

  6. awk批量提取序列

    在提取前需保证序列文件仅有一列! awk '{print$1}' input.fa > ouput.fa#就可将ID后面的其余注释信息去掉,仅保留ID 1 awk -F '>' 'NR=F ...

  7. python分布式事务方案(二)基于消息最终一致性 荐

    python分布式事务方案(二)基于消息最终一致性 上一章采用的是tcc方案,但是在进行批量操作时,比如说几百台主机一起分配策略时,会执行很长时间,这时体验比较差. 由于zabbix隐藏域后台,而这个 ...

  8. Kummer 定理

    \(n!\) 中含素数 \(p\) 的幂次为 \(\displaystyle\sum_{i=1}\lfloor\frac{n}{p^{i}}\rfloor\) Kummer 定理:\({n+m\cho ...

  9. MFC状态栏的创建与添加进度条

    1.首先要创建状态栏 MFC中创建状态栏是用数组来分隔格子的.所以要先弄个数组 下面在自己继承的CWnd类.cpp文件中定义一个静态数组indicators static UINT indicator ...

  10. String, StringBuffer 和 StringBuilder之间的区别

    String, StringBuffer 和 StringBuilder 可变性 String不可变 StringBuffer 和 StringBuilder 可变 线程安全 String 不可变,因 ...