Android 在标准Linux系统上扩展了很多用户。

在Android 4.1中,定义这些用户的文件为

system/core/include/private/android_filesystem_config.h

在这里也就直接粘贴过来吧

#define AID_ROOT             0  /* traditional unix root user */

#define AID_SYSTEM manifestapplicationactivityintent-filteractioncategoryintent-filteractivityapplicationuses-permissionuses-permissionmanifest> 

如上述文件描述中加下划线的斜体部分,该文件的作用是说明该软件需要发送短信的功能。

值得注意的是:通过测试发现一种特殊的情况,应用程序可以在程序运行时申请root权限,如右图,在使用Android TerminalEmulator时尝试使用su命令切换到root用户。若用户已通过hacking的方式使得Android系统获得了root权限,则可以允许该程序以root用户权限执行;反之即算用户选择“允许”,也不能使程序以root用户权限执行。

谈Android系统及程序授权机制-LMLPHP

3. Android系统对应用程序权限申请的处理方式分析

对Android源代码中的如下文件进行分析:

(1) InstallAppProgress.java:其路径为\packages\apps\PackageInstaller\src\com\android\packageinstaller\InstallAppProgress.java;

(2)PackageInstallerActivity.java:其路径为\packages\apps\PackageInstaller\src\com\android\packageinstaller\PackageInstallerActivity.java;

(3) AppSecurityPermissions.java:其路径为\frameworks\base\core\java\android\widget\AppSecurityPermissions.java

总结得出如下图所示的Android系统对应用程序授权申请的处理流程:

(1) 进入处理应用程序授权申请的入口函数;

(2) 系统从被安装应用程序的AndroidManifest.xml文件中获取该应用正常运行需申请的权限列表;

(3) 显示对话框,请求用户确认是否满足这些权限需求;

(4) 若同意,则应用程序正常安装,并被赋予相应的权限;若否定,则应用程序不被安装。系统仅提供给用户选择“是”或者“否”的权利,没有选择其中某些权限进行授权的权利。

10-25 17:47
查看更多