Android相关权限的概念

基于DAC的文件管理系统的android实现 基于DAC的文件管理系统的android实现,就是一个app 模拟dac的实现原理 立即下载

1.权限

  每个程序在安装时都有建立一个系统ID,如app_15,用以保护数据不被其它应用获取。Android根据不同的用户和组,分配不同权限,比如访问SD卡,访问网络等等。底层映射为Linux权限。

2. 应用申请权限
  1)应用开发者通过AndroidManifest.xml中<uses-permission>指定对应权限,再映射到底层的用户和组,默认情况下不设定特殊的权限。AndroidManifest加入权限后系统安装程序时会在图形界面中提示权限

  2) 如果是缺少某个权限(程序中使用的某种权限而在AndroidManifest.xml中并未声名),程序运行时会在logcat中打印出错误信息requires <permission>

  3) 与某个进程使用相同的用户ID

    应用程序可与系统中已存在的用户使用同一权限,需要在AndroidManifest.xml中设置sharedUserId,如android:sharedUserId="android.uid.system ",作用是获得系统权限,

  但是这样的程序属性只能在build整个系统时放进去(就是系统软件)才起作用,共享ID的程序必须是同一签名的

  4)关于应用程序共用权限的问题,在PackageManagerService.java中有相关的配置

    PackageManagerService(){

      mSettings.addSharedUserLPw("android.uid.system",

      Process.SYSTEM_UID, ApplicationInfo.FLAG_SYSTEM);

      mSettings.addSharedUserLPw("android.uid.phone", RADIO_UID, ApplicationInfo.FLAG_SYSTEM,

      new int[] {UID_NET_RAW, UID_QCOM_DIAG, UID_NET_ADMIN});

      ……
    }

 

    比如:看到PhoneApp 的AndroidManifest.xml中

      android:sharedUserId="android.uid.phone" 使PhoneApp具有radio权限

      在访问RIL时会进行此权限检测

3. Android权限的实现

  1)第一层:由应用设置,修改AndroidManifest.xml,形如:

    <uses-permission android:name=”android.permission.INTERNET”/>

  2)第二层:框架层,权限对应组,frameworks/base/data/etc/platform.xml,形如:

    <permission name=”android.permission.INTERNET”>

      <group gid=inet” />

    </permission>

  3)第三层:系统层,系统的权限,

    system/core/include/private/android_filesystem_config.h,形如:

    #define AID_RADIO 1001 /* telephony subsystem, RIL */

    #define AID_INET 3003 //建立SOCKET的权限

    ……

 

    static const struct android_id_info android_ids[] = {

      { "radio", AID_RADIO, },

      { “inet”, AID_INET, },

      ……

4.系统权限

  1) 特殊权限的用户

  #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 */

  ……

  2) 查看可用系统的权限

    $ adb shell

    # pm list permissions

5. framework层对权限的判断

  1)相关源码实现

    frameworks/base/services/java/com/android/server/PackageManagerService.java

    frameworks/base/services/java/com/android/server/am/ActivityManagerService.java

  2)在系统层,如何查看某个应用的权限

    a)在应用进程开启时,ActivityManagerService.java会在logcat中输出该应用的权限,形如:

      I/ActivityManager(1730): Start proc com.anbdroid.phone for restart com.android.phone:pid=2605 uid=1000 gids={3002,3001,3003}

      即它有3001,3002,3003三个权限:访问蓝牙和建立socket

    b)注意:此打印输出在应用第一次启动时。如果进程已存在,需要先把对应进程杀掉,以保证该进程重新启动,才能显示

    c)具体实现,见:

      framewors/base/services/java/com/android/server/am/ActivityManagerService.java

      的函数startProcessLocked(),其中取其组信息的具本语句是

      mContext.getPackageManager().getPackageGids(app.info.packageName);

 

From:http://blog.youkuaiyun.com/xieyan0811/article/details/6083019?reload

基于STM32L4XX、HAL库的BQ27520YZFR-G4 电量监测计驱动程序设计 (可选) -------- TS (Pin 3) 连接温度传感器。(可选) -------- BAT (Pin 2) 连接电池正极。// 假设I2C1已初始化。// 每5秒更新一次。// 短暂延时确保数据准备好。支持Impedance Track™技术,提供高精度电量测量。适用于便携式设备如智能手机、平板电脑等。// 可添加初始化验证代码。// 初始化BQ27520。// 发送控制子命令。// 配置模拟滤波器。// 配置数字滤波器。// I2C1初始化函数。 阅读详情

相关推荐

分布式光纤传感(DFOS)DTS/DAS/DSS 三合一:10公里管线监测实战与数据解读

本文详细介绍了分布式光纤传感(DFOS)技术在10公里管线监测中的实战应用,通过DTS(温度)、DAS(振动)、DSS(应变)三合一系统,实现对管线健康状态的立体感知。文章涵盖工程部署、数据采集、多物理量数据融合及噪声抑制等关键技术,展示了如何通过一根光纤完成复杂监测任务,显著提升管线安全性和维护效率。

weixin_29168153的博客 315

Android 修改 init.rc

Android 根目录下可以看到 init.rc ,但是却无力修改,改了也白瞎,重启就恢复了,ramdisk.... init.rc 是 rootfs 中的文件,Android 将 rootfs(initramfs) link 到 linux kernel image 中,生成正常启动的boot.img, recovery 模式的 recovery.img. Android 每

漫不经心 1万+

别再被网站风控了!手把手教你修改Chromium源码,实现TLS指纹随机化

本文详细介绍了如何通过修改Chromium源码实现TLS指纹随机化,有效规避网站风控。文章深入解析了TLS指纹(如JA3指纹)的工作原理,并提供了具体的源码修改步骤和编译方法,帮助开发者突破高级反爬技术。通过动态打乱加密套件顺序,实现每次请求生成不同的指纹,显著提升自动化工具的隐蔽性。

weixin_28712661的博客 427

Android多用户权限实战:如何正确使用INTERACT_ACROSS_USERS_FULL(附代码示例)

本文深入解析了Android高级权限android.permission.INTERACT_ACROSS_USERS_FULL的实战应用。作为系统级权限,它允许应用跨用户启动组件、发送广播及绑定服务,适用于设备管理等深度集成场景。文章提供了详细的权限声明、核心API(如startActivityAsUser)使用示例及调试技巧,帮助开发者安全高效地实现多用户环境下的交互功能。

n7o8p的博客 603

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1878

Qt快速读取Excel文件

网上很多读取方式都是如下形式,太慢了,打开文件+读取文件要6s以上,实在是受不了! QAxObject excel("Excel.Application"); excel.setProperty("Visible", false); QAxObject *work_books = excel.querySubObject("WorkBooks"); work_boo...

c+c++的博客 2万+

dac_override denied android sepolicy问题处理

0. Log: 11-17 20:56:59.504 687 687 W XXX_service: type=1400 audit(0.0:489): avc: denied { dac_override } for capability=1 scontext=u:r:XXX_service:s0 tcontext=u:r:XXX_service:s0 tclass=capability permissive=0 dac_override【自主访问控制(DAC,Discretionary Acc..

Summer Breeze 夏日微风 3112

PostGIS 小白入门详细指南

PostGIS 是 PostgreSQL 的一个扩展,它将 PostgreSQL 转变为一个功能强大的空间数据库,使其能够存储、查询和分析地理空间数据。PostGIS 遵循开放地理空间联盟(OGC)的标准,支持各种空间数据类型和操作,如点、线、多边形、缓冲区、空间连接等。存储各种空间数据类型(如几何类型和地理类型)空间索引,提高查询性能丰富的空间函数和操作支持投影和坐标系统转换城市规划与管理环境监测与分析物流与运输优化地图制作与可视化位置服务与导航。

落魄书生的职业学习生涯 1万+

Android P SElinux权限调试

Android P SElinux权限调试 在Android P上要开发一个开机过程中运行bin程序,在Android O上权限问题还算比较好解决,而在 Android P上面由于谷歌收紧了 Android SElinux控制,增加了许多neverallow规则,导致调试权限十分不便 开发的bin程序由于要开机运行,因此需要通过init.rc去启动这个bin程序severe。而这个bin程序要去控...

Kian_G 的博客 7334

基于STM32设计的指针式电子钟与万年历(升级版)

这是基于STM32设计的一个指针式电子钟+万年历小项目,采用3.5寸的LCD屏显示时钟,日历、温度、天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等。整体项目主要是技术点就是LCD屏的图形绘制。比如: 时钟的时针绘制、分针、秒针、表盘、日历绘制等等。

1万+

【无人机项目实战】第三章:fast_planner工程解读(附C++代码)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、规划系统运行逻辑【业务部分】1.Fast_planner_node.cpp【程序入口】功能代码实现2.kino_replan_fsm.cpp【状态机转移】功能代码实现KinoReplanFSM::init()函数订阅目标点回调函数订阅里程计回调函数检查路径规划是否成功【重要】执行状态机FSM定时器回调函数【重要】判断目标点是否有障碍物或者是轨迹执行过程中是否有障碍物的回调函数3

qq_35635374的博客 1万+

Android M中需要Runtime申请的权限

摘要Android M (23)以上,需要对dangerous permissions进行运行时申请。本篇文章简单梳理一下权限相关的一些东东。 Normal and Dangerous PermissionsNormal Permissions:原文:Normal permissions cover areas where your app needs to access data or reso

u011319826的专栏 1104

博途PLC模糊PID控制(附SCL完整源代码)

操作人员根据对象的当前状态和以往的控制经验,用手动控制的方法给出适当的控制量,对被控对象进行控制。用电脑模拟操作人员手动控制的经验,对被控对象进行控制。用模糊数学的知识模仿人脑的思维方式,对模糊现象进行识别和判决,给出精确的控制量,对被控对象进行控制。与经典控制理论和现代控制理论相比,模糊控制的特点是不需要建立对象的精确模型。根据操作人员手动控制的经验,总结的完整控制规则,在根据系统当前的运行状态,经过模糊推理,模糊判决等运算,求出控制量,实现对被控对象的控制。......

RXXW_Dor的博客 8967

安卓系统root指北(采用adb+Supersu的方案)

安卓系统root小白教程,使用adb无线调试和supersu

weixin_62405059的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android引导用户打开位置权限_想升级 App?先要个权限吧!!!

点击上方的终端研发部,右上角选择“设为星标”每日早8点半,技术文章准时送上公众号后台回复“学习”,获取作者独家秘制精品资料往期文章记五月的一个Android面试经今日头条屏幕适配方案落地研究APK瘦身-是时候给App进行减负了即学即用Android Jetpack - Navigation手机商对“鸿蒙”进行了密集测试:比安卓系统快?那些简历造假拿 Offer 的程序员,后来都怎么样了?...

weixin_39818014的博客 812

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

android的 root权限

本文将从几个方面,由浅至深地讲述ROOT到底是什么东西? 一. ROOT权限简单介绍 二.为什么需要ROOT 三. ADBD的ROOT权限 四.深入源代码 ROOT权限简介: ROOT权限是Linux内核中的最高权限,如果你的身份是ROOT,那么你就具有了ROOT权限。有了最高权限,你就可以为所欲为,换句话说,如果恶意程序获取到了ROOT权限,那么就可以肆意地破

新时代农民工 679

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android权限赋予流程

android 权限 permission

weixin_41591109的博客 3821

PackageManagerService (二) 权限管理

下面是部分权限的整理汇总,这里做备份记录。存储允许挂载和反挂载外部文件系统可移动存储允许程序格式化可移动文件系统,比如格式化清空SD卡允许应用程序读取设备外部存储空间的文件允许程序写入外部存储允许程序管理文件的访问允许程序删除缓存文件允许程序读取所有者数据允许一个程序写入但不读取所有者数据网络允许程序访问网络连接,可能产生GPRS流量允许程序改变网络连接状态允许获取网络信息状态允许获取当前WiFi接入的状态以及WLAN热点的信息允许程序改变Wi-Fi连接状态。

Yang_Mao_Shan的博客 1796

android 获取多个动态获取权限,Android6.0获取动态权限代码示例

Android系统对所有的危险权限进行了分组,称为 权限组 。属于同一组的危险权限将自动合并授予,用户授予应用某个权限组的权限,则应用将获得该权限组下的所有权限(前提是相关权限在 AndroidManifest.xml 中有声明)。危险权限 和 权限组 列表如下: 在 AndroidManifest.xml 声明过的危险权限对应的权限组可以在系统 “设置” -> “应用” -> “应用...

weixin_42303721的博客 387

Android 运行时权限获取-PermissionsDispatcher

前段时间在写着玩时用到了一个定位的库,但却总没能成功获取到地理位置,反而换了部手机却又可以了。想到两部手机的版本定位不了的是6.0的,而另一部是4.4的,所以应该是权限没有。查看日志后也确是如此,为此就记录一下关于6.0(api 23)之后的运行时权限的获取问题。虽然这个很早就有了,但是仍有部分应用其实还是没有对此做处理的。本篇是以一个开源库PermissionsDispatcher的使用来写这篇学

一朝天子一朝陈的博客 3891
上一篇: 通过system调用Am命令执行动作
下一篇: 通过select较高效的捕获和处理鼠标键盘事件
WythePlus
博客等级 码龄11年 397粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值