<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. 大语言模型(LLM)运行报错:cannot import name 'AutoModel' from 'transformers'

    解决方法: 安装pytorch即可,不过需要注意项目的README文件和requirements文件,安装对应版本的pytorch即可.

  2. 国产显卡如何正确打开 —— Windows平台下使用驱动精灵为国产显卡更新驱动(兆芯平台)

    买了一个国产的电脑,全国产,CPU慢些也就忍了,软件兼容性差.稳定性差也忍了,大不了就用来上网看电影嘛,关键问题是这个国产显卡放电影居然有些卡,播放电影的时候存在明显的卡顿感,这简直是把国产电脑在我脑 ...

  3. 使用TensorFlow、Pytorch等深度学习框架时如何设置对OpenCV的使用

    如题: 在使用深度学习框架时如果同时也在使用opencv那么有一些设置是需要设定的,第一个就是在python代码中设定禁止使用opencl: cv2.ocl.setUseOpenCL(False) o ...

  4. 【转载】python的魔法方法———A Guide to Python's Magic Methods

    原文地址: https://rszalski.github.io/magicmethods/ ===================================================== ...

  5. vue&element项目实战 之element使用&用户&字典模块实现

    6.用户模块 用户模块api import request from '@/utils/request' export function login(data) { return request({ ...

  6. 推荐一款界面优雅、功能强大的 .NET + Vue 权限管理系统

    前言 今天推荐一款用 .NET 和 Vue3 实现的开源权限管理系统.它的界面清爽干净,功能强大,还具备灵活的角色权限分配功能,能够满足不同规模企业的管理需求.无论你是开发新手还是大神,都能轻松上手, ...

  7. ffmpeg和ffplay常用指令

    FFmpeg 常见用法 1. 基本命令结构 ffmpeg [global_options] -i input_file [input_options] output_file [output_opti ...

  8. 一步步开发Windows服务(Windows Service)[转]

    基于0起步来创建一个服务,做到简单的记录时间日志功能,其具体招行方法可自行添加. 1.创建服务 2.删除默认服务文件 3.添加自己的服务文件 4.更改启动项目 5. 引用 using System.T ...

  9. 【牛客刷题】HJ10 字符个数统计

    题目链接 简单的说这题就是字符串去重以后检查长度.如果用Java的话,可以遍历字符串,然后利用Set来进行去重,最后统计Set的size就可以了.但是如果是Go语言,则稍微麻烦点.基本思路就是用map ...

  10. k8s-使用Network Policies实现网络隔离

    一.需求 Kubernetes 的命名空间主要用于组织和隔离资源,但默认情况下,不同命名空间中的 Pod 之间是可以相互通信的.为了实现更严格的网络隔离,同一套k8s需要根据不同的命名空间进行网络环境 ...