Android 中的那些权限

Android 13 关于安卓判断通知权限 Android 13 推送权限申请详解 阅读详情

Android 中的那些权限

1.       随着智能手机的普及,越来越多各式各样的应用和服务出现在手机平台上。这些应用和服务要访问手机上的资源,就牵涉到权限问题。手机又是一个非常敏感的平台,涉及到用户的很多个人信息,隐私等等,在这种背景下权限控制显得非常有必要。

 

2.       Android中已经定义了permission这个概念来管理系统中的权限,但是一个恶意程序可能会申请超过其需求不必要的权限,获取用户信息,对手机进行破坏等等,怎么样能够更严格的控制系统中的行为?有三个方案:

a)         Android不是定义了permission吗?我们可以通过去除恶意App的权限,达到控制的目的。但是这样会带来一个问题,当该App需要访问资源时AMS会checkPermission,如果它的permission被去除了,系统就会抛exception,app可能会crash。这样带来的用户体验不好,用户会说App正在运行怎么出错停止运行了?

b)         在系统中访问特定资源的地方加hook,如果不允许该app访问资源,返回无效值,使其得不到有用信息或者无法写入信息。 Hook通过root,进程注入的方式实现。此方案的缺点是系统需要root,而root会给手机带来很多风险,所有app都可以获取最高root权限。市面上的手机安全软件都是通过这种方式,不root就不能进行权限控制。

c)         如果系统本身已经拥有这样的hook点,则不需要root也可以实现权限控制。具体做法是单独运行一个安全进程,如果有访问资源的行为,从hook点发起IPC调用到安全进程,安全进程根据访问者的package name,uid,pid等信息决定允不允许访问。这是我们的方案,系统内部已经集成了安全机制,真正做到不root也安全的Android系统。

 

3.       那么我们就来看看哪些权限是用户关心的,怎么处理才可以满足权限控制需求并获得最佳体验。首先是一些敏感数据。

a)         数据库信息,比如联系人信息,通话记录,短信等。这些信息都是很重要的,而很多app在自己功能之外额外的申请访问这些资源。我们知道这些信息在Android中是以provider的形式存储,通过ContentResovler访问,可以拥有query,Insert,delete,update操作。不同信息在数据库中通过URL区分,每一条记录是一行,通过检测判断URL和App信息,决定允不允许读写。

                         i.              query操作

通过特定URL查询,返回对应Cursor。如果禁止此次查询,可以返回一个WrapCursor,该Cursor是对原来信息的封装,App拿到之后获取不到里面的任何信息,没有行、列,任何操作都会返回无效值。

                       ii.              insert操作

往对应URL中插入一行,返回插入后的那一行。如果禁止此次写操作,返回null,不执行插入操作。

                      iii.              delete操作

将对应URL中删除若干行,返回删除行数。如果禁止删除,返回 -1 ,不删除任何内容。

                      iv.              update操作

更新URL中的若干行,返回更新行数。如果禁止更新,返回 -1 ,不进行任何更新。

 

b)         手机中有很多跟硬件相关信息,比如IMSI,IMEI,手机号码等。这些信息标示着这部手机在网络中的身份。通过TelephonyManger拿到手机信息PhoneSubInfo,再使用PhoneSubInfo的方法获取对应信息。不想让App获取这些有用信息,只要在PhoneSubInfo的这些方法中返回null就可以。

                         i.              IMEI:国际移动设备身份码,与每台手机一一对应,而且该码是全世界唯一的。PhoneSubInfo的getDeviceId方法获取。

                       ii.              IMSI:国际移动用户识别码,区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。PhoneSubInfo的getSubscriberId方法获取。

                      iii.              手机号码。PhoneSubInfo的getLine1number方法获取。

 

c)         Android中有两种跟手机位置相关的信息,一种是通过GPS获取的精确位置信息(FINE_LOCATION),一种是通过基站获取的粗略位置信息(COARSE_LOCATION)。具体实现是App通过LocationManager的requestLocationUpdate方法注册一个listener,当位置信息变化时通知App。用户可能不希望暴露自己的位置,那么可以在此方法中真正注册listener之前返回,使App无法获取手机位置信息。

 

4.       Android手机中的敏感行为:

a)         打电话。一个哪怕是后台的service都可以申请这个权限,并且偷偷的打电话,而用户只想让特定软件具有该功能,比如系统自带的phone。如何控制打电话权限呢?打电话实际上最终通过startActivity(Intent(ACTION_CALL))启动Phone App的呼叫界面,进行拨号。如果我们禁止打电话,只要在AMS中startActivity这个动作真正执行之前返回就可以了。

 

b)         电话录音。这个权限比打电话还要危险,因为打电话还要弹出系统呼叫界面,而录音则可以静默执行。如果有恶意程序在后台录音,会造成用户隐私甚至是商业秘密等泄露。对通话进行录音要通过MediaRecorder对象来操作,设置录音来源为电话setAudioSource(VOICE_CALL)。如果要禁止,在其开始录音(MediaRecorder.start)真正执行之前返回,或者使其无法正常start。

 

c)         发短信。很多App都申请这个权限,大都是为了方便用户使用其服务,但是也不乏发短信扣费的服务,如果用户玩游戏时不小心点了某个窗口就有可能定制了某服务,几块钱就花出去了。更严重的是App可以悄悄地在后台发送短信,导致用户信息泄露。发送短信需要通过SmsManager提供的send方法,在真正开始发送之前检查发送发起者是否合法,如果禁止就返回,使发送动作没有真正执行。

 

d)         在通知栏弹通知。手机的屏幕本来就小,很多软件偏偏又要在通知栏弹很多广告之类的通知,让很多用户很苦恼。弹通知是通过NotificationManager的notify方法,最终在NotificationManagerService的enqueueNotificationInternal方法中加入通知队列。在此之前做检查,不希望弹的通知不准加入队列,就可达到控制弹通知的目的。

 

5.       综上,我们的方案是系统本身就提供权限检查机制,不需要将手机root。在App访问敏感资源或行为时,提示用户,阻止用户不希望的访问,让用户真正做手机的主人,使潜在的危险降低到最小。

 

linux echo命令以及linux echo命令提示权限不够的解决办法 linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法。下面通过本文给大家介绍linux echo命令以及linux echo命令提示权限不够的解决办法,感兴趣的朋友一起看看吧 立即下载

相关推荐

开漏输出(漏极开路输出与集电极开路输出)和推挽输出怎么判断

判断一个引脚是还是。

weixin_56838517的博客 1057

Android中的那些权限

随着智能手机的普及,越来越多各式各样的应用和服务出现在手机平台上。这些应用和服务要访问手机上的 资源,就牵涉到权限问题。手机又是一个非常敏感的平台,涉及到用户的很多个人信息,隐私等等,在这种背景 下权限控制显得非常有必要。       1.       Android中已经定义了permission这个概念来管理系统中的权限,但是一个恶意程序可能会申请超过其需求不必要的权限,获取用户信

编程小栈 1968

嘉立创封装图下载后必做的3步优化(附批量删除机械层技巧)

本文针对从嘉立创下载的封装图,系统讲解了三步核心优化流程,以解决其直接使用时的常见问题。重点介绍了如何高效批量删除冗余的机械层,避免制造错误;并详细说明了规范丝印层间距、统一焊盘命名等关键步骤,帮助工程师将第三方封装转化为可靠、合规的设计资源,从而提升PCB设计效率与文件质量。

weixin_29227585的博客 433

移动安全-安卓权限获取

Android的系统权限 Android的系统权限不是由用户控制,而是由开发者根据开发的需要控制相关权限的开放与否,权限控制主要放置在AndroidManifest.xml文件中。将如下的权限控制属性写入AndroidManifest.xml文件就可以获取相应的系统权限。如果在开发中遇到一些调试的问题很可以就是权限的原因。 Android常见的权限 访问登记属性:android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限   

写代码的小阿帆的博客 542

Frida提取Cocos游戏XXTEA密钥的实战方法论

XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识

weixin_33509600的博客 419

西门子 标准程序解读---> 机器手抓取和涂胶控制程序

摘要 该程序实现机械手在OP70/OP90工位的自动化控制,核心功能包括: 流程控制:分段(Seg1-Seg11)管理抓件、涂胶、放件等动作,结合DB1050/DB1250数据块监控工位状态及变位机位置反馈。 安全机制:配置干涉区(FC124)、实时检测安全光/急停信号,防止碰撞;服务程序(FB191)支持维修位触发与安全隔离。 参数配置:通过DB块关联机器人速度、节拍(FB27)、车型编码(如空过=2)及手自动模式(DB70.DBX21.2)。 应用场景:适用于汽车焊接/装配线

工控智联驿站 1239

android用户权限获取

一、关于android的用户机制          首先,Android不同的应用拥有不同的进程,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。    Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为"app_"加一个数字,比如app_43不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。...

845

【产品】 产品设计:如何解决铝合金氧化着色后表面硬度低的问题(硬质氧化)

1、氧化处理技术 1)化学氧化 化学氧化处理所获得的膜层较薄,一般厚度为0.5μm ~4μm,质软不耐磨,抗蚀能力低于阳极氧化膜。 一般不宜单独便用,由于化学氧化膜吸附能力好,主要作用于油漆的底层,化学氧化按其溶液性可分为碱性和酸性两种。按其膜层性质可分为氧化膜,磷酸盐膜、铬酸盐膜及磷酸一铬酸盐膜等(这类型的氧化膜是可导电)。 2)电化学氧化(阳极氧化) 电化学氧化(俗称阳极氧化)是铝及...

产品线负责人 9745

Android 权限管理

1.权限分级 Android中权限分为四类,不同级别的权限对应不同的认证方式。 ①normal:低风险权限 只要申请了就可以使用(在AndroidManifest.xml中添加< uses-permission>标签),安装时不需要用户确认; ②dangerous:高风险权限 安装时需要用户的确认才可使用; ③signature: 只有当申请权限的应用程序的数字签名与声明此权限的应用程序的数字签名相同时(如果是申请系统权限,则需要与系统签名相同),才能将权限授给它; ④signatureOrSy

zenmela2011的专栏 4446

Amesim应用篇-电芯等效电路模型标定

为了使计算模型更加准确,在有电芯实验测试数据的情况下,依据现有的实验数据对Amesim中的电池等效电路模型进行标定。标定的目的是为了获得更加符合项目实际情况的电芯等效电路模型,标定完的电芯可以用于搭建PACK模型,也可以用于其他虚拟实验。本文以充电标定为例,进行介绍。放电标定与充电一致。

2201_75375391的博客 1213

168、OIS光学防抖系统设计:陀螺仪标定、音圈马达驱动与滚珠式/悬丝式结构选型

本文总结了OIS光学防抖系统设计中的关键问题与解决方案。作者通过实际案例指出,陀螺仪标定需重视零偏、灵敏度和温度补偿问题,音圈马达驱动需采用电流环控制并优化相位补偿。在机械结构选型方面,滚珠式适合大角度补偿但存在回差问题,悬丝式精度高但受重力影响,需根据应用场景选择。系统联调建议从开环到闭环逐步验证,注意陀螺仪与驱动频率匹配。最后给出5条经验建议:关注陀螺仪信噪比而非分辨率、预留标定余量、重视机械结构公差、配备专业调试工具、协调OIS与电子防抖的分工配合。文章强调OIS调试需针对不同模组特性进行反复测试与标

zzfmlxs的博客 46

iphone获取android号码,如何通过adb获取Android手机的电话号码?

iphonesubinfo服务“跟踪”订户信息,包括电话号码.不幸的是iphonesubinfo服务没有实现dump()方法所以dumpsys什么都没显示.您将不得不使用service call命令来调用IPhoneSubInfo.getLine1Number()或IPhoneSubInfo.getMsisdn()根据Android版本和您的操作符,以下一个或两个命令将告诉您电话号码(服务呼叫命令...

weixin_35182991的博客 1095

CCF编程培训师资认证(PTA)标准(教学能力T)

随着计算机科学的不断发展,计算机相关技术应用到社会各个行业,越来越多的青少年参加到了计算机程序设计的学习中,这对编程培训教师提出了更高的专业要求和职业要求。CCF开展编程培训师资认证项目(Programming Trainer Accreditation,PTA),旨在建立一个规范的、科学的、权威且有公信力的三方认证。认证考试分编程专业能力(P)和教学能力(T)两部分。本标准根据《CCF编程培训师资认证条例》第十条制定,旨在明确教学能力(T)的测试标准。

lan_in的博客 1714

Android 申请权限,安卓11、安卓12文件权限,RxPermissions使用,android.permission.WRITE_SETTINGS

1.需要用户手动赋予的权限( Dangerous Permissions) 所属权限组 权限 日历 READ_CALENDAR 日历 WRITE_CALENDAR 相机 CAMERA 联系人 READ_CONTACTS 联系人 WRITE_CONTACTS 联系人 GET_ACCOUNTS 位置 ACCESS_FINE_.........

meixi_android的博客 5920

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

安卓10 Android Q 权限申请遇到的坑——更严格的动态权限申请和存储权限

安卓10 File类新建文件操作失败的解决方案问题描述具体创建文件方法如下 问题描述 本人刚入安卓app开发的大门,安卓10的File类就把我拒之门外。 我使用了File.makedir()和file.createnewfile()方法,首先申请了权限(这可以肯定),在我的安卓6.0上完美运行,创建了logger.log文件和所需文件夹。然而到了安卓10这里费了一番周折,总是无法建立,方法调用返回...

qq_34352612的博客 8051

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

delphi android动态权限,DELPHI安卓动态权限申请

DELPHI安卓动态权限申请安卓8.0以前的版本,只需要给静态权限就可以了,但安卓8.0及以后的版本,还需要运行期用代码动态申请权限。下面以《蓝牙权限》为例,其他权限类似。Delphi 10.3 社区版,提供的 Sample 里面有一个例子程序在:C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Mult...

weixin_26874745的博客 330

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android蓝牙动态权限,安卓蓝牙动态权限

安卓蓝牙动态权限安卓7.0及以下版本在 IDE 的 Project - Options 菜单弹出来的窗口里面,找到左边树结构的: Application -- Uses Permissions 项目,则右边会出来一堆权限让你打勾。这里要勾选上 Bluetooth 和 Bluetooth admin 两项。老的安卓版本,勾选这两项就可以了。安卓8.0及以上版本,还需要运行期用代码动态申请权限。代码里...

weixin_29014237的博客 2737

android位置权限动态申请,DELPHI安卓定位权限申请

DELPHI安卓定位权限申请安卓8及以后版本的权限分为静态和动态申请2部分,而之前的安卓版本只需要静态申请权限。1)静态申请定位权限:2)动态申请定位权限:usesSystem.Permissions,{$IFDEF ANDROID}Androidapi.Jni.Os,Androidapi.Helpers,{$ENDIF}...FPermissionCoarseLocation: string;F...

weixin_33895652的博客 884

安卓手机权限总结安卓权限列表

1.android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SYNC_SETTINGS写入Google在线同步设置 3.android.permission.WRITE_SOCIAL_STREAM读取用户的社交信息流 4.android.permission.WRITE_SMS允许程序写短信 5.android.permission.WRITE_SETTINGS允许程序读取或写入系统设..

amaoatao的博客 3647

delphi android动态权限,delphi 安卓蓝牙动态权限

安卓蓝牙动态权限安卓7.0及以下版本在 IDE 的 Project - Options 菜单弹出来的窗口里面,找到左边树结构的: Application -- Uses Permissions 项目,则右边会出来一堆权限让你打勾。这里要勾选上 Bluetooth 和 Bluetooth admin 两项。老的安卓版本,勾选这两项就可以了。安卓8.0及以上版本,还需要运行期用代码动态申请权限。代码里...

weixin_39552768的博客 293

Android安卓增加应用读写权限

在你请求权限之前,最好提供给用户一个合理的解释,说明为什么你的应用需要这些权限以及如何将其用于应用中。要确保用户隐私和应用的正常运行,始终提供清晰的解释,并考虑在用户拒绝权限时的适当操作。当在你的 Android 应用中需要访问设备上的敏感数据、执行危险操作或与设备资源交互时,你需要在应用清单文件中声明权限,以及在运行时请求并处理这些权限。在 Android 6.0 及更高版本中,你需要在运行时请求一些危险权限,而不仅仅依赖于清单文件中的声明。你可以在需要权限的地方调用系统提供的权限请求方法。

m0_63324772的博客 4140

安卓定位权限

随着安卓系统版本的变动,定位权限也多次被修改。随着变动次数的增多,但是对于不同的版本,不同的机型差异越来越大,在处理定位权限时,需要注意的地方就变多了。本篇主要记录对不同安卓版本,不同厂商机型定位权限的适配。

EleganceKing的博客 1万+

android 请求权限,安卓请求权限

有时候我们的应用需要读写sd卡,就需要android.permission.WRITE_EXTERNAL_STORAGE权限,但是它属于危险型权限。光在Manifest中配置还不够,你还需要运行时请求去用它们。以下就以Mainfest.permission.WRITE_EXTERNAL_STORAGE为例,1)检测是否拥有权限image.png2)如果没有权限就请求权限image.pngreque...

weixin_39979167的博客 792
上一篇: Android上隐藏应用程序浅析
下一篇: Android手机安全软件之电话拦截功能浅析
鲶鱼团队
博客等级 码龄14年 36粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值