android - 关于在 Android 应用程序中动态检查权限

标签 android permissions android-manifest android-permissions

跟进我之前的 question关于运行时的 android 权限实现,我发现 android 中有许多不同的方法,应用程序可以通过这些方法验证调用(客户端)应用程序所拥有的权限。这包括 checkCallingPermission、checkCallingOrSelfPermission、checkCallingUriPermission、checkCallingOrSelfUriPermission、checkPermission、checkUriPermission 等调用。据我了解 android documentation ,我只能找到这些与运行时权限检查有关的调用。我的问题:

  • 有没有其他方法(而不是使用上述调用) 动态检查调用者的权限?如果有的话 此类电话,请提供信息/链接或列出它们。
  • checkCallingOrSelfPermission的描述说

it grants your own permissions if you are not currently processing an IPC. Use with care!

这似乎是有风险的,因为它可能有助于将(危险的)权限委托(delegate)给调用进程,这可能导致特权升级(如果使用不当)。请告诉我我所说的这可能导致特权升级攻击是否正确。

  • 我不明白为什么一个进程(正在运行的应用程序)会检查是否拥有某些权限(它很清楚它有权做什么?)。请让我知道 这种特定方法设计背后的直觉: 检查调用或 self 许可。 (简单来说,为什么/什么时候我需要 checkCallingOrSelfPermission?)

最佳答案

Android 中有两种权限检查机制。

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

你想要的是检查特定包是否具有特定权限,checkPermission是答案。有关更详细的描述,Android Developer Site 中有一篇关于此主题的文章。 - http://developer.android.com/guide/topics/security/permissions.html#declaring

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

还有一个关于你之前关于 multiple permissions in android:permisson 的问题.应用程序可以通过一种方式在 list 中定义他们想要的权限列表。

检查- http://developer.android.com/guide/topics/manifest/uses-permission-element.html

关于android - 关于在 Android 应用程序中动态检查权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434972/

相关文章:

asp.net - 策略异常 : Required permissions cannot be acquired — what does this error mean

Android 在 & 符号后修剪其余的深层链接 URI

android - 如何在 Android 上更新 Google Analytics 的 list ?

c# - 如何刷新 GCM 中过期一段时间的注册 token ?

php - WebView 中的按钮链接回另一个应用程序 Activity

android - 应用程序子类实现了所需的接口(interface),但系统拒绝

android - wpl_cli :not found with rooted android device?

sql - 如何查看 SQL 数据库的所有授权?

android - Cordova位置权限每次都会触发onResume

android-layout - 我的 WebView 没有填充选项卡的屏幕(但没有 pb 填充手机的屏幕)