Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何验证android权限?_Android_Android Source_Android Permissions - Fatal编程技术网

如何验证android权限?

如何验证android权限?,android,android-source,android-permissions,Android,Android Source,Android Permissions,我已经下载了android源代码。我想了解如何在后端验证应用程序的权限 例如,如果一个应用程序试图访问摄像头,操作系统如何验证它是否在其清单文件中获得了权限 更具体地说,我想探索确切的源文件夹 编辑: 经过几次代码挖掘,感谢Stephan的解释,我能够在framework/base/data/etc/platform.xml中找到权限列表及其分配的uid或gid 位置、联系人等似乎已允许接触壳牌公司。例如: <assign-permission name="android.permissi

我已经下载了android源代码。我想了解如何在后端验证应用程序的权限

例如,如果一个应用程序试图访问摄像头,操作系统如何验证它是否在其清单文件中获得了权限

更具体地说,我想探索确切的源文件夹

编辑: 经过几次代码挖掘,感谢Stephan的解释,我能够在framework/base/data/etc/platform.xml中找到权限列表及其分配的uid或gid

位置、联系人等似乎已允许接触壳牌公司。例如:

<assign-permission name="android.permission.READ_CONTACTS" uid="shell" />


那么,这是否意味着,当应用程序在其清单文件中拥有READ_CONTACTS权限时,默认情况下它有权这样做?我的意思是验证在哪里进行。

看看这本书,可以得到部分答案:

我无法确认我从那本书中得到了正确的答案,但这是我自己对那本书的解释,因为它与你的问题有关。任何人,请随时更正我的解释。我并不假装肯定知道答案。希望我自己对这个权限系统的解释能帮助您找到代码执行工作的正确位置,因为我也没有找到该部分

我相信这些权限都是在Linux文件组id权限级别透明处理的。安卓本质上是一个操作系统,它坐在另一个操作系统上并使用另一个操作系统

在安卓系统中,当系统摄像头第一次安装时,Linux会为其分配自己的用户id,以及自己的主目录,并将其列在名为服务管理器的目录中(不要与完全不同的更高级别安卓服务混淆),同时它还会获得组id(单个组id表示可能多个摄像头的入口点:前摄像头、后摄像头和第二个后摄像头(如果您有3D手机)。该组id(gid)本质上是一个整数,在安装时从表示摄像头权限的字符串常量映射而来

在Linux中,每个应用程序都是一个用户,每个应用程序也是一个目录,但在Linux中,一切都是一个文件,即使是空目录也是一个文件,设备也是一个文件,甚至io也可以是一个文件

在这里,我相信事情会变得有点反直觉。在Linux中,每个用户应用程序都有自己的空白沙盒,用于运行自己的进程。在Linux中,Binder使用权限本身来访问有问题的系统应用程序的句柄,并将其与应用程序绑定。因此,如果没有系统应用程序及其附带的所有可能的环境变量,你自己的应用程序甚至不知道如何在沙箱之外运行任何东西。这就像编写程序而忽略相关的导入语句一样

这就是为什么在安卓系统中,当你在使用一个功能时,系统没有直接告诉你“你没有权限这么做”。系统甚至不知道那么多。系统只知道你试图运行一些它找不到/无法访问的东西(不管出于什么原因,它可能只是你的源文件中的一个输入错误)。因此,大多数时候,当你忘记包含许可时,系统只会给你一个困惑的表情,就像你对它说火星话一样


直到最近,Android开发工具的创建者们才越来越善于向我们暗示,我们可能忘记了包含特定的权限。忘记权限是一个很容易犯的错误,特别是在初学者中。使用正确的IDE/工具链,这个错误可能会永久消失自动化工具。

感谢您的回复。我肯定会深入阅读这本书,您的解释为我的理解奠定了基础。期待您的正确答案:)非常感谢您的宝贵意见。我已将问题更新为非常具体的问题,如有任何进一步的想法,我们将不胜感激。