码迷,mamicode.com
首页 > 移动开发 > 详细

android APP 权限基础

时间:2017-06-28 14:20:07      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:mis   prot   tac   let   解析   副本   系统资源   权限   script   

  1   权限(permission)的定义。
   系统本身定义了很多permission,例如

  •         "android.permission.WAKE_LOCK",     
  •         "android.permission.ACCESS_WIFI_STATE",
  •         "android.permission.ACCESS_FINE_LOCATION" ,
  •         "android.permission.ACCESS_FINE_LOCATION" 

     应用也可以定义一个自己的权限,例如
    <permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"
        android:label="@string/permlab_downloadManager"
        android:description="@string/permdesc_downloadManager"
        android:protectionLevel="signatureOrSystem" />

      使用这些permission,第一步需要在AndroidManifest里面定义。例如

        <uses-permission       android:name="android.permission.ACCESS_FINE_LOCATION" />  
        当然了系统不会对任何应用开放任何权限的。否则就等于没有权限,权限还是有级别的

 

2   android权限定义的级别。权限的级别是权限使用的一个维度
就拿上面定义的android.permission.ACCESS_DOWNLOAD_MANAGER权限来说。它的使用级别(定义:  android:protectionLevel="signatureOrSystem")是系统签名或者系统应用才可以使用。
        系统定义一下级别: normal , dangerous , signature , signatureorsystem
         normal 一般定义就可以使用到
         dangerous 在安装时会给用户提醒,如果用户关闭了这些权限,使用时一般的应用程序会提示用户打开这些权限。这种级别的权限是有限的

  •      GROUP  PERMISSIONS
  •      CALENDAR(日历): READ_CLENDER, WRITE_CLENDAR
  •      CAMERA(相机): CAMEAR
  •      CONTACTS(联系人):READ_CONTACTS , WRITE_CONTACTS, GET_ACCOUNTS
  •      LOCATION(定位): ACCESS_FINE_LOCATION, ACCESS_CORASE_LOCATION
  •      MICROPHONE(麦克风):RECORD_AUDIO
  •      PHONE(电话):READ_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOICEMAIL, USE_SIP,         PROCESS_OUTGOING_CALLS
  •                 SMS(短信):SEND_SMS, RECEIVE_SMS, READ_SMS, RECEIVE_WAP_PUSH,RECEIVE_MMS
  •      SENSORS(传感器):BODY_SENSORS
  •      STORAGE(存储)


   signature 需要系统签名才可以使用。例如一下的权限
   <permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"
          android:label="@string/permlab_downloadCompletedIntent"
          android:description="@string/permdesc_downloadCompletedIntent"
          android:protectionLevel="signature" />
   当然了回报相关权限的API会生效。
   signatureorsystem  表示需要系统签名,或者属于系统应用,(一般内置在system/app或者system/priv-app或者system/priv-app下面的应用)可   以使用系统的API。例如"android.permission.ACCESS_DOWNLOAD_MANAGER",

 

3   android 权限使用的用户维度 
   app安装的时候,android会为每一个引用程序分配一个UID(用户ID)和GID(用户组ID)。
   此外安装过程中还会生成一个GIDS。通过解析AndroidManifest,可以解析到应用运行时使用到的权限(<uses-permission>),如果安装过程中app  被赋予了permission的权限,而且它有自己的GID,那么这些权限的GID会被添加到这个应用的GID里面。从这个角度来说,app的GIDS会包含它使用  的权限的集合(前提是已经被赋予)。进一步就是说app能使用到那些权限或者资源都被定义在他的GUIDS里面。
   综合上述,一个应用程序会有一个UID。而且会有个一个GIDS。这个GIDS包含了运行时可以使用到的系统资源。
   Android利用沙盒来隔离每个应用程序,是之使用到独立的资源。每个应用程序都有独立的沙盒,这样就阻碍了应用程序之间的共享。但是如果需要做到两个应用程序之间的资源共享,则需要两个前提:1 是这两个应用程序有相同的签名。2 是两个应用程序定义相同的android:sharedUserId 这样两个应用程序就会运行同一进程里面,彼此共享权限。

 

4   其他,linux进程运行中的用户

  •  uid(guid).真实用户(组),进程的真是所有者。
  •  euid(geuid).有效用户(组),进程运行的时候需要的各种权限,依赖于suid。
  •  suid(gsuid).保存设置用户(组),是有效用户的副本。当超级用户修改有效用用户时,会先生成一个有效用户的副本,即suid。这样就会有主于有效用户的恢复。
  •  fuid(fuid). 文件用户(组)

android APP 权限基础

标签:mis   prot   tac   let   解析   副本   系统资源   权限   script   

原文地址:http://www.cnblogs.com/ouyanliu/p/7089242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!