<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. 【Scala】05 对象特性Part2

    特质重复继承关系 父类特质 A 子类特质B 继承 A 子类特质C 继承A 类D 继承了 B 又实现了 C class D extends B with C 继承顺序是 D 继承 C 继承 B 继承 A ...

  2. 实现一个终端文本编辑器来学习golang语言:第三章文本查看器part1

    本章我们来完成文本编辑器的文件打开和查看功能,最后成品如上图.我们将分4步,逐渐完成本章所需功能.内容比较多,会分为两个部分,第一部分主要关注于"View视图"和"buf ...

  3. Salesforce Sales Cloud 零基础学习(五) My Labels的使用

    本篇参考: https://help.salesforce.com/s/articleView?id=sf.sales_core_record_labels.htm&type=5 在公司中,S ...

  4. stm32 F103C8T6 4x4矩阵键盘使用

    首先感谢 江科大 的stm32入门课程 受益匪浅.推荐有兴趣的朋友去看看. 先看看我用的矩阵键盘是啥样的(很常见的一种) 接线如图(其他型号根据自己需求接上GPIO口) 代码基于stm大善人的代码修改 ...

  5. 2.3.6版本发布!Apache SeaTunnel Zeta引擎迎来新架构!

    Apache SeaTunnel 2.3.6 版本于近日正式发布,社区期待的 SeaTunnel Zeta Master/Worker 新架构.事件通知机制.支持动态编译的transform等新功能和 ...

  6. 成为Apache SeaTunnel贡献者的N种方式

    如何参与开源贡献 参与开源贡献的常见方法有多种: 1)参与解答 在社区中, 帮助使用过程中遇到困难的人,帮他们解释框架的用法也算是一种贡献. 2)文档贡献 帮助框架来完善文档,比如说将英文文档翻译为中 ...

  7. 恭喜社区迎来新PMC成员!

    恭喜Apache SeaTunnel社区又迎来一位PMC Member@liugddx!在社区持续活跃的两年间,大家经常看到这位开源爱好者出现在社区的各种活动中,为项目和社区发展添砖加瓦.如今成为项目 ...

  8. 通过 C# 将数据写入到Excel表格

    Excel 是一款广泛应用于数据处理.分析和报告制作的电子表格软件.在商业.学术和日常生活中,Excel 的使用极为普遍.本文将详细介绍如何使用免费.NET库将数据写入到 Excel 中,包括文本.数 ...

  9. C#数据结构与算法实战入门指南

    前言 在编程领域,数据结构与算法是构建高效.可靠和可扩展软件系统的基石.它们对于提升程序性能.优化资源利用以及解决复杂问题具有至关重要的作用.今天大姚分享一些非常不错的C#数据结构与算法实战教程,希望 ...

  10. Viper:强大的Go配置解析库

    1 介绍 Viper是适用于Go应用程序的完整配置解决方案.它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式.目前Star 26.6k, 它支持以下特性: 设置默认值 从JSON.T ...