Android 的权限管理是怎么实现的

作者&投稿:郑龙 (若有异议请与网页底部的电邮联系)
Android 的权限管理是怎么实现的~

根据用户的使用过程体验,可以将 Android 涉及的权限大致分为如下三类:(1)Android 手机所有者权限:自用户购买 Android 手机后,用户不需要输入任何密码,就具有安装一般应用软件、使用应用程序等的权限;(2)Android root 权限:该权限为 Android 系统的最高权限,可以对所有系统中文件、数据进行任意操作。出厂时默认没有该权限,需要使用 z4Root 等软件进行获取,然而,并不鼓励进行此操作,因为可能由此使用户失去手机原厂保修的权益。同样,如果将 Android 手机进行 root 权限提升,则此后用户不需要输入任何密码,都将能以 Android root 权限来使用手机。(3)Android 应用程序权限:Android 提供了丰富的 SDK(Software development kit),开发人员可以根据其开发 Android 中的应用程序。而应用程序对 Android 系统资源的访问需要有相应的访问权限,这个权限就称为 Android 应用程序权限,它在应用程序设计时设定,在 Android 系统中初次安装时即生效。值得注意的是:如果应用程序设计的权限大于 Android 手机所有者权限,则该应用程序无法运行。如:没有获取 Android root 权限的手机无法运行 Root Explorer,因为运行该应用程序需要 Android root 权限。Android 系统权限定义Android 系统在 /system/core/private/android_filesystem_config.h 头文件中对 Android 用户 / 用户组作了如下定义,且权限均基于该用户 / 用户组设置。值得注意的是:每个应用程序在安装到 Android 系统后,系统都会为其分配一个用户 ID,如 app_4、app_11 等。以下是 Calendar 和 Terminal 软件在 Android 系统中进程浏览的结果(其中,黑色字体标明的即为应用分配的用户 ID):在 Android 系统中,上述用户 / 用户组对文件的访问遵循 Linux 系统的访问控制原则,即根据长度为 10 个字符的权限控制符来决定用户 / 用户组对文件的访问权限。该控制符的格式遵循下列规则:第 1 个字符:表示一种特殊的文件类型。其中字符可为 d( 表示该文件是一个目录 )、b( 表示该文件是一个系统设备,使用块输入 / 输出与外界交互,通常为一个磁盘 )、c( 表示该文件是一个系统设备,使用连续的字符输入 / 输出与外界交互,如串口和声音设备 ),“.”表示该文件是一个普通文件,没有特殊属性。2 ~ 4 个字符:用来确定文件的用户 (user) 权限;5 ~ 7 个字符:用来确定文件的组 (group) 权限;8 ~ 10 个字符:用来确定文件的其它用户 (other user,既不是文件所有者,也不是组成员的用户 ) 的权限。第 2、5、8 个字符是用来控制文件的读权限的,该位字符为 r 表示允许用户、组成员或其它人可从该文件中读取数据。短线“-”则表示不允许该成员读取数据。第 3、6、9 位的字符控制文件的写权限,该位若为 w 表示允许写,若为“-”表示不允许写。第 4、7、10 位的字符用来控制文件的制造权限,该位若为 x 表示允许执行,若为“-”表示不允许执行。举个例子,“drwxrwxr-- 2 root root 4096 2 月 11 10:36 lu”表示的访问控制权限(黑色字体标明)为:因为 lu 的第 1 个位置的字符是 d,所以由此知道 lu 是一个目录。第 2 至 4 位置上的属性是 rwx,表示用户 root 拥有权限列表显示 lu 中所有的文件、创建新文件或者删除 lu 中现有的文件,或者将 lu 作为当前工作目录。第 5 至 7 个位置上的权限是 rwx,表示 root 组的成员拥有和 root 一样的权限。第 8 至 10 位上的权限仅是 r--,表示不是 root 的用户及不属于 root 组的成员只有对 lu 目录列表的权限。这些用户不能创建或者删除 lu 中的文件、执行 junk 中的可执行文件,或者将 junk 作为他们的当前工作目录。Android 应用程序权限申请每个应用程序的 APK 包里面都包含有一个 AndroidMainifest.xml 文件,该文件除了罗列应用程序运行时库、运行依赖关系等之外,还会详细地罗列出该应用程序所需的系统访问。程序员在进行应用软件开发时,需要通过设置该文件的 uses-permission 字段来显式地向 Android 系统申请访问权限。

这个是需要root一下获得手机的最高权限 才可以的。
虽然root以后可以获得最高权限,可以删除一些预装软件。
但是root是有风险的,可能会对系统有所伤害,你要是想root,
推荐你腾讯手机管家的pc 版即应用宝,市场非常庞大。

1、android开发获取真机的权限,无非就是能够查看手机中所有的文件。但是由于android安全性的原因,这些文件是看不到的。但是做android开发,又不得不查看手机中文件,要解决的就是这样的问题。
2、android获取真机查看文件权限,最重要也是第一步要做的就是获取手机的root权限,可以在网上搜索第三方root工具对手机进行root,在root之前一定要有手机变砖的准备,虽然几率很小。root成功之后,在工程环境中打开DDMS,发现有的文件文件权限是drwxrwx--x这是linux的文件权限,第一个代表文件类型d是directory目录,后面三个是创建者的权限r读w写x执行。这是文件还是打不开的。
3、这时,安装文件的目录找到sdk\platform-tools路径 shift 右键打开命令提示符,输入命令adb shell su -c "chmod 777 /想打开的路径"。这里要注意的是,如果目录是多层的,就要一条一条的输入,一层一层的输入这行命令,每输入一次,目录深一层。到这里结束后,就获得了真机的权限,可以查看手机中的文件了。

  Android 系统在 /system/core/private/android_filesystem_config.h 头文件中对 Android 用户 / 用户组作了如下定义,且权限均基于该用户 / 用户组设置。
  #define AID_ROOT 0 /* traditional unix root user */
#define AID_SYSTEM 1000 /* system server */
#define AID_RADIO 1001 /* telephony subsystem, RIL */
#define AID_BLUETOOTH 1002 /* bluetooth subsystem */
#define AID_GRAPHICS 1003 /* graphics devices */
#define AID_INPUT 1004 /* input devices */
#define AID_AUDIO 1005 /* audio devices */
#define AID_CAMERA 1006 /* camera devices */
#define AID_LOG 1007 /* log devices */
#define AID_COMPASS 1008 /* compass device */
#define AID_MOUNT 1009 /* mountd socket */
#define AID_WIFI 1010 /* wifi subsystem */
#define AID_ADB 1011 /* android debug bridge (adbd) */
#define AID_INSTALL 1012 /* group for installing packages */
#define AID_MEDIA 1013 /* mediaserver process */
#define AID_DHCP 1014 /* dhcp client */
#define AID_SDCARD_RW 1015 /* external storage write access */
#define AID_VPN 1016 /* vpn system */
#define AID_KEYSTORE 1017 /* keystore subsystem */
#define AID_USB 1018 /* USB devices */
#define AID_DRM 1019 /* DRM server */
#define AID_DRMIO 1020 /* DRM IO server */
#define AID_GPS 1021 /* GPS daemon */
#define AID_NFC 1022 /* nfc subsystem */

#define AID_SHELL 2000 /* adb and debug shell user */
#define AID_CACHE 2001 /* cache access */
#define AID_DIAG 2002 /* access to diagnostic resources */

/* The 3000 series are intended for use as supplemental group id's only.
* They indicate special Android capabilities that the kernel is aware of. */
#define AID_NET_BT_ADMIN 3001 /* bluetooth: create any socket */
#define AID_NET_BT 3002 /* bluetooth: create sco, rfcomm or l2cap sockets */
#define AID_INET 3003 /* can create AF_INET and AF_INET6 sockets */
#define AID_NET_RAW 3004 /* can create raw INET sockets */
#define AID_NET_ADMIN 3005 /* can configure interfaces and routing tables. */

#define AID_MISC 9998 /* access to misc storage */
#define AID_NOBODY 9999

#define AID_APP 10000 /* first app user */

  值得注意的是:每个应用程序在安装到 Android 系统后,系统都会为其分配一个用户 ID,如 app_4、app_11 等。以下是 Calendar 和 Terminal 软件在 Android 系统中进程浏览的结果(其中,黑色字体标明的即为应用分配的用户 ID):
  USER PID PPID VSIZE RSS WCHAN PC NAME
app_16 2855 2363 216196 20960 ffffffff afd0ee48 S com.android.providers.calendar
app_91 4178 2363 218872 25076 ffffffff afd0ee48 S jackpal.androidterm

  在 Android 系统中,上述用户 / 用户组对文件的访问遵循 Linux 系统的访问控制原则,即根据长度为 10 个字符的权限控制符来决定用户 / 用户组对文件的访问权限。该控制符的格式遵循下列规则:
  第 1 个字符:表示一种特殊的文件类型。其中字符可为 d( 表示该文件是一个目录 )、b( 表示该文件是一个系统设备,使用块输入 / 输出与外界交互,通常为一个磁盘 )、c( 表示该文件是一个系统设备,使用连续的字符输入 / 输出与外界交互,如串口和声音设备 ),“.”表示该文件是一个普通文件,没有特殊属性。
  2 ~ 4 个字符:用来确定文件的用户 (user) 权限;
  5 ~ 7 个字符:用来确定文件的组 (group) 权限;
  8 ~ 10 个字符:用来确定文件的其它用户 (other user,既不是文件所有者,也不是组成员的用户 ) 的权限。
  第 2、5、8 个字符是用来控制文件的读权限的,该位字符为 r 表示允许用户、组成员或其它人可从该文件中读取数据。短线“-”则表示不允许该成员读取数据。
  第 3、6、9 位的字符控制文件的写权限,该位若为 w 表示允许写,若为“-”表示不允许写。
  第 4、7、10 位的字符用来控制文件的制造权限,该位若为 x 表示允许执行,若为“-”表示不允许执行。
  举个例子,“drwxrwxr-- 2 root root 4096 2 月 11 10:36 lu”表示的访问控制权限(黑色字体标明)为:因为 lu 的第 1 个位置的字符是 d,所以由此知道 lu 是一个目录。第 2 至 4 位置上的属性是 rwx,表示用户 root 拥有权限列表显示 lu 中所有的文件、创建新文件或者删除 lu 中现有的文件,或者将 lu 作为当前工作目录。第 5 至 7 个位置上的权限是 rwx,表示 root 组的成员拥有和 root 一样的权限。第 8 至 10 位上的权限仅是 r--,表示不是 root 的用户及不属于 root 组的成员只有对 lu 目录列表的权限。这些用户不能创建或者删除 lu 中的文件、执行 junk 中的可执行文件,或者将 junk 作为他们的当前工作目录。

在AndroidManifest.xml文件中 添加你要加的权限 比如我们将满足网络的需要,我们需要添加所需的网络权限:
<uses-permission android:name="android.permission.INTERNET" />

若我们要添加广播权限,则
<receiver android:name=".MyBroadcastReceiver" > <intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>

这个看你要加的是什么权限,在Android官方文档中可以查寻我们需要使用的权限。
http://developer.android.com/reference/android/Manifest.permission.html
不同的api有着不同的权限
具体问题你可以具体问我


丰泽区13473668041: Android 的权限管理是怎么实现的 -
华战高锰: 根据用户的使用过程体验,可以将 Android 涉及的权限大致分为如下三类:(1)Android 手机所有者权限:自用户购买 Android 手机后,用户不需要输入任何密码,就具有安装一般应用软件、使用应用程序等的权限;(2)Android root 权限:...

丰泽区13473668041: android授权管理怎么实现的?android授权管理怎么实现
华战高锰: 安卓授权管理,一般是应用在添加系统上没有的程序软件,或者是删除装机系统上的一些基带程序软件,手机装好系统后,一般就是默认基带系统上的所有程序和软件, 如果你安装一些软件程序需要授权,包括可以即时通讯、定位、以及涉及到信息电话等安全问题的时候,就会弹出授权提示. APP需要的权限被禁止,就是不能正常打开运行的.

丰泽区13473668041: 哪位知道android手机权限管理在哪里设置 -
华战高锰: 方法/步骤打开设置菜单,找到权限管理选项打开后你可以看到很多权限比如读取联系人的权限如果你不想让某个软件读取你的联系人,点开它选择禁止即可还可以查看某个软件的所有权限,打开设置里的权限管理后,点右侧的应用点开后软件的所有权限都会显示在其中,如果比较信任某个软件,还可以选择信任选项

丰泽区13473668041: 如何管理android手机中app的权限 -
华战高锰: 一般的安卓手机都是在设置里面管理app权限的.工具:华为荣耀6\安卓5.1\EMUI3.1 进入设置界面2.在全部设置里找到权限管理3.进入应用选项卡4.设置该应用的各种权限

丰泽区13473668041: Android 的权限管理是怎么实现的 -
华战高锰:Android 作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application).根据 Android 的软件框图,其软件层次结构自下而上...

丰泽区13473668041: 安卓系统的手机,怎么修改软件的权限 -
华战高锰: 工具/原料:手机一部 1、以华为手机为例,在手机桌面上找到“设置”图标,点击打开手机设置界面. 2、在打开的“设置”界面,选择“全部设置”选项卡,然后在“隐私和安全”栏下方找到“权限管理”,点击打开“权限管理”界面. ...

丰泽区13473668041: 如何获取android管理员权限 -
华战高锰: 打开手机“设置”内的“安全中心”选项. 在该选项中选择“授权管理”. 进入菜单中找到“应用权限管理”内容. 在该选项内的“录音”中找到“QQ”这个选项. 将该软件取消管理,即可获得语音权限.

丰泽区13473668041: 安卓手机如何管理软件安装包权限? -
华战高锰: 1. 打开手机设置,选择“应用设置”选项.2. 在应用设置界面,点击“授权管理”.3. 进入授权管理后,选择并点击“风险应用安装授权”.4. 找到并点击“允许安装未知来源应用”选项...

丰泽区13473668041: android 授权管理怎样实现的比如说360卫士
华战高锰: 向系统写入程序,允许访问系统内部程序

丰泽区13473668041: Spring Security对Android客户端如何实现权限管理 -
华战高锰: 一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中,已经实现过,并经过验证; 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置,目前这种方式已经实现,并经过验证. 三种是细分角色和权...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网