关于Android自定义权限的几个问题

19

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

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

“基本应用”可以通过声明自定义权限(即在清单文件中使用<permission>标签)来保护其某些组件(例如活动和服务),而调用受自定义权限保护的活动和服务的“客户端应用”需要获取必要的权限(即在清单文件中使用<uses-permission>标签)来调用基本应用中的这些组件。

但是,关于自定义权限,我有以下问题:

  1. 如果将自定义权限声明为危险的(即android:protectionLevel="dangerous"),客户端应用是否需要在安装时得到用户的批准? 如果是这样,用户如何知道这些自定义权限,因为没有任何针对自定义权限的文档。
  2. 在安装时,客户端应用如何知道基本应用已在用户的手机上安装?是否有方法让客户端应用了解此信息?
  3. 一旦安装了客户端应用,如果用户决定删除基本应用,会发生什么情况? 在这种情况下,如果用户尝试使用客户端应用,是否会引发任何安全异常?

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

谢谢。


请参考以下链接:https://dev59.com/TGoy5IYBdhLWcg3wCpoz这会有所帮助。 - Manu
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.据我所知,在应用程序安装时,客户端应用程序无法查看基础应用程序是否存在。但是在启动客户端应用程序时,可以进行查看。无论如何,Android系统根据您的android.xml文件授予权限。因此,在安装时,客户端应用程序无需担心基础应用程序。

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


4
两个重要的点:第一,用户接受程度是非黑即白的,要么安装带有权限警告的应用程序,要么不安装。第二,如果使用应用程序之前没有安装授权应用程序,权限将不会被授予,依赖于这些权限的功能也将无法正常工作。 - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接