为什么80%的码农都做不了架构师?>>>   hot3.png

进程沙箱为互不信任的应用程序之间提供了隔离机制,SharedUserID则为具备信任关系的应用程序提供了共享资源的机制。然而,由于用户自行安装的应用程序也不具备可信性,在默认情况下,Android应用程序没有任何权限,不能访问保护的设备API与资源。因此,权限机制是Android安全机制的基础,决定允许还是限制应用程序访问受限的API系统资源。应用程序的权限需要明确定义,在安装时被用户确认,并且在运行时检查,执行,授予和撤销权限。在定制权限下,文件和内容提供者也可以受到保护。

具体而言,应用程序在安装时都分配有一个用户标志(UID)以区别于其他应用程序,保护自己的数据不被其他应用获取。Android根据不同的用户和组,分配不同权限,比如访问网络,访问GPS数据等,这些Android权限在底层映射为Linux的用户与组权限

权限机制的实现层次简要概括如下:

  • 应用层显式声明权限:应用程序包(.apk文件)的权限信息在AndroidManifest.xml文件中通过等标签指定。需要申请某个权限,使用指定。

  • 权限声明包含权限名称,属于的权限组与保护级别

  • 权限组是权限按功能分成的不同集合,其中包含多个具体权限,例如,发短信,无线上网与拨打电话的权限可列入一个产生费用的权限组。

  • 权限的保护级别分为NormalDangerousSignatureSignatureorsystem四种,不同的级别限定了应用程序行使此权限时的认证方式。比如,Normal只要申请就可用,Dangerous权限在安装时经用户确认才可用,Signature与Signatureorsystem权限需要应用程序必须为系统用户,如OEM制造商或ODM制造商等。

  • 框架层与系统层逐级验证,如果某权限未在AndroidManifest.xml中声明,那么程序运行时会出错。通过命令行调试工具logcat查看系统日志可发现需要某权限的错误信息。

  • 共享UID的应用程序可与系统另一用户程序同一签名,也可同一权限。一般可在AndroidManifest文件中设置sharedUserId,如android:sharedUserId="android.uid.shared",以获得系统权限。但是,这种程序属性通常由OEM植入,也就是说对系统软件起作用。

Android的权限管理模块在2.3版本之后,即使有root权限,仍无法执行很多底层命令和API。例如,su到root用户,执行ls等命令都会出现没有权限的错误。

转载于:https://my.oschina.net/fhd/blog/350950

更多相关文章

  1. Android 基础知识7:Android 应用权限详解
  2. Android应用程序模块详解
  3. Android UI用户界面开发辅助工具(值得一试)
  4. Android中的WebView进行直接加载网页(要注意解决权限问题)

随机推荐

  1. Android EditText获取焦点事件
  2. Android jar包Proguard混淆方法
  3. Android 自制照相机
  4. Android中SQLite增删改查的方法(Android开
  5. Android(安卓)使用GPS定位获取经纬度的方
  6. Android的程序关联和自定义类型文件的方
  7. android 通过ContentResolver获得联系人
  8. 如何避免输入法弹出时遮挡住按钮或输入框
  9. android textview 显示 文本 .txt
  10. Android常用功能代码块