在android应用程序中动态检查权限

在android应用程序中动态检查权限,android,permissions,android-manifest,android-permissions,Android,Permissions,Android Manifest,Android Permissions,继我之前关于android运行时权限强制的讨论之后,我发现android中有许多不同的方法,应用程序可以验证调用(客户端)应用程序所拥有的权限。这包括像checkCallingPermission、checkCallingOrSelfPermission、checkCallingOrSelfPermission、checkCallingOrSelfUriPermission、checkPermission、checkUriPermission这样的调用。就我所经历的而言,我只能在运行时找到这些与

继我之前关于android运行时权限强制的讨论之后,我发现android中有许多不同的方法,应用程序可以验证调用(客户端)应用程序所拥有的权限。这包括像checkCallingPermission、checkCallingOrSelfPermission、checkCallingOrSelfPermission、checkCallingOrSelfUriPermission、checkPermission、checkUriPermission这样的调用。就我所经历的而言,我只能在运行时找到这些与权限检查有关的调用。我的问题是:

  • 是否有其他方法(而不是使用上述呼叫) 要动态检查调用方的权限?如果有的话 此类电话,请提供信息/链接或列出
  • 描述说
如果您当前未处理某个应用程序,它将授予您自己的权限 IPC。小心使用

这似乎有风险,因为它可能会促进将(危险的)权限委托给调用进程,从而导致权限提升(如果不小心使用)。请让我知道我所说的这可能导致特权升级攻击是否正确

  • 我不明白为什么一个进程(运行应用程序)会检查它是否拥有某些权限(它很清楚自己有权做什么?)。请让我知道具体情况 这种特殊方法设计背后的直觉: 选中CallingorSelfPermission。(简单地说,我为什么/什么时候需要 选中CallingorSelfPermission?)

    • Android中有两种类型的权限检查机制

      一个是每个进程的运行时动态检查,另一个是每个包的静态检查。您提到的都是关于运行时动态的东西是在上下文中实现的,另一个版本是在PackageManager中。-

      您要检查的是特定包是否具有特定权限,答案是。为了获得更详细的描述,Android开发者网站上有一篇关于这个主题的文章。 -

      在许多情况下,您不需要使用动态权限检查方法,只有当您与一个提供商合作,以便将一些私有文件共享给特定的客户端、远程服务或一些小部件时,才需要使用动态权限检查方法,这些小部件通过Intent或IPC与临时权限授予系统相关

      还有一件事是关于你之前的问题。有一种方法可以让应用程序在清单中定义他们想要的权限列表

      检查-

      谢谢。我很想知道应用程序之间的通信(涉及IPC)以及在运行时发生的权限检查(这就是为什么我恰当地命名了这个问题)。我认为软件包级别的权限超出了这个范围。
      另外,对于您之前提出的关于android中多个权限的问题,还有一点需要说明:permisson。有一种方法可以让应用程序在清单中定义他们想要的权限列表
      ——我完全理解这一点——我之前的问题并不是这么简单和直接。这是关于一个应用程序需要客户端应用程序的许可才能拥有IPC。我在那篇文章中得到了一个正确的答案。我正在浏览Api的。。我找到了getPackageManager().addPermission(PermissionInfo)。它说一个包只能将权限添加到由它自己的包或另一个具有相同用户id的包定义的树上。它还说,在安装任何使用这些权限的APK之前,必须添加新权限。但我没有使用此api,也没有得到它的确切功能?如果我要了解示例代码,请提供帮助