Android复习(三)清单文件中的元素——>path-permission、permission、permission-group、permission-tree
<path-permission>
- 语法:
<path-permission android:path="string" android:pathPrefix="string" android:pathPattern="string" android:permission="string" android:readPermission="string" android:writePermission="string" />
- 包含于:
<provider>
- 说明:
- 定义内容提供程序中特定数据子集的路径和所需权限。您可以多次指定此元素,以提供多个路径。
- 属性:
android:path
- 内容提供程序数据子集的完整 URI 路径。只能授予对由此路径标识的特定数据的相应权限。用于提供搜索建议内容时,必须附加有“/search_suggest_query”。
android:pathPrefix
- 内容提供程序数据子集的 URI 路径的初始部分。可以授予对路径共有此初始部分的所有数据子集的相应权限。
android:pathPattern
- 内容提供程序数据子集的完整 URI 路径,但可以使用以下通配符:
- 星号(“
*
”)。此通配符匹配出现零次到多次的紧邻前面的字符的一个序列。 - 句点后跟星号(“
.*
”)。此通配符匹配零个或多个字符的任意序列。
由于在从 XML 读取字符串时(在将其解析为模式之前)将“
\
”用作转义字符,因此您需要进行双重转义。例如,字面量“*
”将编写为“\\*
”,字面量“\
”将编写为“\\
”。这基本上与采用 Java 代码构造字符串时需要编写的内容一样。如需详细了解这些类型的模式,请参阅 PatternMatcher 类中的 PATTERN_LITERAL、PATTERN_PREFIX 和 PATTERN_SIMPLE_GLOB 的说明。
- 星号(“
android:permission
- 客户端要读取或写入内容提供程序的数据而必须具备的权限的名称。您可以使用此属性来方便地设置适用于读取和写入的单项权限。不过,
readPermission
和writePermission
属性优先于此属性。 android:readPermission
- 客户端要查询内容提供程序而必须具备的权限。
android:writePermission
- 客户端要对由内容提供程序控制的数据进行更改而必须具备的权限。
<permission>
- 语法:
-
<permission android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | ...] />
- 包含于:
<manifest>
- 说明:
- 声明可用于限制对此应用或其他应用的特定组件或功能的访问权限的安全权限。如需详细了解权限的工作原理,请参阅简介中的权限部分以及安全与权限文档。
- 属性:
android:description
- 权限的用户可读说明,比标签更长,信息更丰富。该说明可能会显示以向用户说明权限 - 例如,当系统询问用户是否向其他应用授予权限时。
此属性必须设置为对字符串资源的引用;与
label
属性不同,它不能是原始字符串。 android:icon
- 对表示权限的图标的可绘制资源的引用。
android:label
- 可向用户显示的权限的名称。
为方便起见,您可以在开发应用时将此标签直接设置为原始字符串。不过,当准备好发布应用时,应将标签设置为对字符串资源的引用,以便可以像界面中的其他字符串一样进行本地化。
android:name
- 权限的名称。这是将在代码中(例如,在
<uses-permission>
元素和应用组件的permission
属性中)用于引用权限的名称。注意:系统不允许多个软件包声明具有相同名称的权限,除非所有软件包都使用相同的证书进行签名。如果某个软件包声明了一个权限,则系统不允许用户安装具有相同权限名称的其他软件包,除非这些软件包使用与第一个软件包相同的证书进行签名。为了避免命名冲突,我们建议为自定义权限使用反向域式命名,例如
com.example.myapp.ENGAGE_HYPERSPACE
。 android:permissionGroup
- 将此权限分配给一个组。此属性的值是该组的名称,必须使用此应用或其他应用中的
<permission-group>
元素声明。如果未设置此属性,则此权限不会属于某个组。 android:protectionLevel
-
说明权限中隐含的潜在风险,并指示系统在确定是否将权限授予请求授权的应用时应遵循的流程。
每个保护级别都包含基本权限类型以及零个或多个标记。例如,
"dangerous"
保护级别没有标记。相反,保护级别"signature|privileged"
是"signature"
基本权限类型和"privileged"
标记的组合。下表列出了所有基本权限类型。如需查看标记列表,请参阅
protectionLevel
。值 含义 “ normal
”默认值。具有较低风险的权限,此类权限允许请求授权的应用访问隔离的应用级功能,对其他应用、系统或用户的风险非常小。系统会自动向在安装时请求授权的应用授予此类权限,无需征得用户的明确许可(但用户始终可以选择在安装之前查看这些权限)。 “ dangerous
”具有较高风险的权限,此类权限允许请求授权的应用访问用户私人数据或获取可对用户造成不利影响的设备控制权。由于此类权限会带来潜在风险,因此系统可能不会自动向请求授权的应用授予此类权限。例如,应用请求的任何危险权限都可能会向用户显示并且获得确认才会继续执行操作,或者系统会采取一些其他方法来避免用户自动允许使用此类功能。 “ signature
”只有在请求授权的应用使用与声明权限的应用相同的证书进行签名时系统才会授予的权限。如果证书匹配,则系统会在不通知用户或征得用户明确许可的情况下自动授予权限。 “ signatureOrSystem
”"signature|privileged"
的旧同义词。在 API 级别 23 中已弃用。系统仅向位于 Android 系统映像的专用文件夹中的应用或使用与声明权限的应用相同的证书进行签名的应用授予的权限。不要使用此选项,因为
signature
保护级别应足以满足大多数需求,无论应用安装在何处,该保护级别都能正常发挥作用。“signatureOrSystem
”权限适用于以下特殊情况:多个供应商将应用内置到一个系统映像中,并且需要明确共享特定功能,因为这些功能是一起构建的。
<permission-group>
- 语法:
-
<permission-group android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" />
- 包含于:
<manifest>
- 说明:
- 声明相关权限的逻辑分组的名称。各个权限通过
<permission>
元素的permissionGroup
属性加入权限组中。权限组中的成员一起显示在界面中。请注意,此元素并不声明权限本身,而只声明可以放置权限的类别。如需了解如何声明权限以及将权限分配到权限组中,请参阅
<permission>
元素。 - 属性:
android:description
- 描述权限组的用户可读文本。文本应比标签更长且更具说明性。此属性必须设置为对字符串资源的引用。与
label
属性不同,它不能是原始字符串。 android:icon
- 表示权限的图标。此属性必须设置为对包含图片定义的可绘制资源的引用。
android:label
- 权限组的用户可读名称。为方便起见,您可以在开发应用时将此标签直接设置为原始字符串。 不过,当准备好发布应用时,应将标签设置为对字符串资源的引用,以便可以像界面中的其他字符串一样进行本地化。
android:name
- 权限组的名称。这是可以分配给
<permission>
元素的<permissionGroup>
属性的名称。
<permission-tree>
- 语法:
-
<permission-tree android:icon="drawable resource" android:label="string resource" ] android:name="string" />
- 包含于:
<manifest>
- 说明:
- 声明权限树的基名。应用拥有树中所有名称的所有权。它可以通过调用
PackageManager.addPermission()
动态地向树中添加新权限。树中的名称由句点(“
.
”)分隔。例如,如果基名为com.example.project.taxes
,则可能会添加如下权限:com.example.project.taxes.CALCULATE
com.example.project.taxes.deductions.MAKE_SOME_UP
com.example.project.taxes.deductions.EXAGGERATE
请注意,此元素并不声明权限本身,而只声明可将更多权限放入其中的命名空间。如需了解如何声明权限,请参阅
<permission>
元素。 - 属性: