为什么手机如何打开手机应用权限软件需要获取权限?


注:本文转载自网络,侵删相信大家在平时使用手机的次数肯定是比较多的,而且因为在平时对手机的摸索越来越频繁,对手机的了解肯定也是变得更多了一些。相信大家都发现了一个问题,就是现在的智能手机在安装一款软件的时候,总是会要求我们授权各种各样的权限,甚至一款普普通通的手机软件,总是会让我们授权通讯录或者是相册这些看似毫不相关的权限,那么我们下载一款软件之后,为什么要让我们授权这些权限呢?授权之后对于手机用户来讲,到底存不存在着一些隐患呢?其次就是通讯录权限,之所以有一些手机软件会让我们授权访问我们通讯录的权限,一方面是为了帮助我们更好的匹配到通讯录中的好友,尤其是一些社交软件,能够借助通讯录帮助我们找到认识的人。其次就是一些手机软件,官方想要通过用户的通讯录,去挖掘一些潜在用户。其实对于这些手机软件所要求我们授权的权限,不同的权限,目的也都是不同的,比如手机的相册权限,有大多数手机软件在我们安装完成之后,总是会要求我们授权相册权限,其实一方面是为了我们在登录账号之后上传头像用的,也有一部分软件是为了方便用户。比如一些社交软件,我们在跟好友聊天的时候,肯定也会发送一些图片或者是视频,而在这种情况下,访问相册权限我们是必须要授权的,要不然的话,我们就无法通过一些社交软件向好友发送相册中的图片或者是视频。另一方面则就是会根据我们相册中的内容,向我们推荐不同的广告或者是商品。相信大家也都发现了一个现象,就是现在的一些手机软件总是会有一个邀请好友赚取佣金的活动,而且也总是会精准的告诉我们通讯录中有哪些好友没有注册某一款软件的账号,所以这些手机软件访问我们通讯录权限的原因就是为了让我们邀请自己认识的好友,注册某一款手机软件。最后一种常见的权限就是访问短信,让用户们授权访问短信的权限主要作用就是为了能够直接读取验证码,现在有很多的手机软件在登陆的时候或者是在一些关系到金额的情况下,都是需要我们输入验证码的,手机软件在获取了访问短信的权限之后,就能够帮助用户在登录或者是其他特殊情况的时候更快的输入验证码。
【背景】从2008年就开始做Android相关的开发,当时Android的版本还比较早,当年在公司做Android的第一个项目,就是将音视频编解码库,封装成OMX IL层组件,替换Android 内部多媒体框架openCore中的组件,这个项目当时是给HTC的G1手机做的(就是全球第一款正式发布的Android手机那个),这十多年做下来,对于Android的框架层还算了解,应该有一定的客观发言权。【结论】简单一句话:就是Android系统中奇烂无比的系统安全权限设计导致的。严格来说,Android系统是没有完整系统性的安全权限设计,从Android最早的版本在不断的迭代过程中,一开始压根没有什么用户隐私安全设计,只是在几个系统API接口层做了一个简单的过滤,后来随着版本的不断迭代更新,功能不断增加,用户隐私安全要求不断增加,Google并没有在某个版本好好的重构一下,而是往代码屎山不断地甩上一坨坨的狗屎代码,最终导致整个隐私安全设计溃烂无比。1、Android的每次大版本的更新,经常会更新一些API和一些权限配置。实现同样的一个功能,可能在旧版本是一套API,但是到新的大版本中需要另外一套API,或者在 AndroidManifest.xml中增加一些新版本中定义的权限配置。随着版本的不断迭代更新,API在不但变化,权限配置项也在不停的变化,最终导致APP中实现一个功能,需要庞大的代码来适配所有版本。例如:当年在手机中做文件访问的管理器,光系统文件访问的API就不下4套(注意:不是4个)不同的访问方式,还要有在 AndroidManifest.xml中对应的权限配置,这简直是要搞死人。按照Google的设计原则,各种权限是需要的时候再申请,但是Android的权限申请API接口设计得太烂,真的要这么开发,光权限处理的代码就需要花费很多时间,而且整体代码流程上完全影响正常业务逻辑代码。可能开发一个功能模块仅需要1个工作日,但是为了这个功能模块增加的权限处理流程开发,需要增加2个工作日,真他娘的的操蛋。所以很多开发者为了简便起见,尽量会在APP一开始就把所有需要的权限都申请了,这也是大家看到的常见情况,APP一启动就要把各种权限申请。2、各种权限的分类不合理,权限名称跟实际功能对应不上,只是因为系统内部有关联所以Android系统直接把这个问题上抛给应用层,给应用层造成很大的困扰。举个笔者当年遇到的例子,我们需要对智能硬件设备进行配网,需要获取当前手机WIFI联接的网络+密码,这个是属于比较敏感的信息,需要申请一系列的权限。相应的权限有如下:<!-- 允许应用程序获取访问定位,就是地理位置,Android 10以上要求权限 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!-- 允许获取网络状态 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 允许获取网络状态 --><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><!-- 允许获取WIFI状态 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 允许改变WIFI状态 --><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>这里的权限中 "允许获取网络状态" 和 "允许获取WIFI状态" 这两个权限要求普通用户也能理解,毕竟需要读取敏感信息,但是两个改变状态的权限对于普通用户不能理解,为啥非要要求。特别是第一个涉及到地理位置定位的权限,普通用户更加不能理解(干嘛要获取我的地理位置信息,这不是非常敏感的隐私信息嘛?)但是 Android系统层操蛋的API接口就TMD需要这些权限,特别是第一个“ACCESS_FINE_LOCATION”权限,在原先早期的Android版本中是不需要的,但是从Android 1.0大版本开始,完全一样的API接口就需要这个权限了。(就是因为Framework内部操蛋的溃烂无比的权限设计)。这种问题,对于普通用户来看,这种要求完全不合理,你读取敏感的 (WIFI+密码)信息,要求授权这可以理解,但是你干嘛要我的地理位置定位信息? 但是Android系统操蛋的API权限就是这么设计的,你让APP厂商怎么跟普通用户解释,完全解释不了。在用户看来,就是厂商你在收集用户信息。虽然的确有很多APP在收集用户信息,但是其实对于很多小应用,很多用户信息压根没有用,但是一些系统API调用就需要额外的一些完全不相关的权限,只能弹出权限框来要求。3、对于APP上架要求,国内是越来越严格的,特别是从2022年6月份开始,因为之前滴滴的事件,国家一下子对于APP上架提出了更加严苛的要求。每一个上架的APP的版本,对于申请的每一项权限都需要提交使用说明理由的。这一块的确是能大大保护用户的隐私,但是对于我上面说的第二种情况也无法避免,因为系统API就是这么设计的。 如果我在读取(WIFI+密码)的时候,偷偷读取用户的地理位置信息呢?(因为也需要同样的权限)总结一下:导致Android权限问题最根本的原因就是其内部溃烂无比的权限设计。

我要回帖

更多关于 如何启用root权限 的文章

 

随机推荐