19

我正在学习 Android 编程,我有点理解自定义权限的概念。

根据我的理解,这是自定义权限的工作方式:

'Base app'可以通过声明自定义权限(即使用<permission>清单文件中的标签)来保护它的某些组件(例如,活动和服务),并且'client app'调用受自定义权限保护的活动和服务需要获取必要的权限(即,在清单文件中使用<uses-permission>标签)清单文件)来调用base app.

但是,我对自定义权限有以下疑问:

  1. 如果自定义权限被声明为危险(即,android:protectionLevel="dangerous"),是否client app需要在安装期间获得用户的批准?如果是这样,用户如何知道这些自定义权限,因为自定义权限没有任何文档。
  2. 在安装时如何client app知道base app已经安装在用户手机中的?无论如何,有client app没有知道这些信息?
  3. 安装后,client app如果用户决定删除 会发生什么base app?在这种情况下,如果用户尝试使用client app它会导致任何安全异常吗?

我不知道这些问题是否有意义,但这让我想知道自定义权限在实际场景中是如何工作的。

谢谢你。

4

1 回答 1

2

您的问题的答案如下。但是您可以参考http://developer.android.com/guide/topics/manifest/permission-element.html以更好地了解 Android 权限。

1.是的,如果您申报

android:protectionLevel="dangerous"

那么系统可能不会自动将其授予请求的应用程序。应用程序请求的任何危险权限都可能会显示给用户,并且在继续之前需要确认。

定义自定义权限的基本应用程序应该通过以下方式提供描述

android:description="string resource"

这是一个示例权限定义。希望它是不言自明的。

<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" | 
 "signature" | "signatureOrSystem"] />

2.据我所知,客户端应用程序在安装时无法看到基础应用程序的存在。但是当客户端App启动时是可能的。无论如何,Android 系统会根据您的 android.xml 文件授予权限。因此客户端应用程序在安装时不必担心基础应用程序。

3.即使仍然安装了客户端应用程序,也可以删除基本应用程序。它不会在任何阶段出现任何错误消息或安全异常。但是,当您尝试再次运行客户端应用程序时,您可能会在尝试从客户端应用程序调用基本应用程序活动时收到“未找到活动”异常。

于 2013-06-13T19:22:31.127 回答