几乎没有关于Android的自定义权限的问题

我正在学习Android编程,并且有一种理解定制许可的概念。

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

'Base app'可以通过声明自定义权限(即在清单文件中使用<permission>标记)和调用由自定义权限保护的活动和服务的'client app' 'Base 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它会导致任何安全exception?

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

谢谢。

Solutions Collecting From Web of "几乎没有关于Android的自定义权限的问题"

下面给出你的问题的答案。 但是您可以参考http://developer.android.com/guide/topics/manifest/permission-element.html以更好地理解Android权限&#x3002;

是的,如果你申报

 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.即使客户端应用程序仍然安装,基本应用程序可以被删除。 它不会在任何阶段通过任何错误消息或安全exception。 但是当您尝试再次运行客户端应用程序时,您可能会在尝试从客户端应用程序调用基本应用程序活动的位置收到“未find活动”exception。