K8000越野电动绞盘 G9000越野电动绞盘 N12000专业电动绞盘 N15000工业电动绞盘 H12000工业液压绞盘 H15000工业液压绞盘 K5000P便携式电动绞盘
K8000 越野绞盘 G9000 4WD绞盘 N12000 专业绞盘 N15000 救援绞盘 H12000 工业绞盘 H15000 工业绞盘 K5000P 便携式绞盘

五种控制Android应用的权限的方法

排行榜 收藏 打印 发给朋友 举报 来源: 网络转载   发布者:网络转载
热度1326票  浏览106次 时间:2012年4月23日 14:13
工业绞盘

2  Android有哪些"权限"

首先需要明确一下Android中的种种"权限"。Android是在Linux内核上建立一个硬件抽象层(Android HAL),通过Dalvik以及各种库来执行android应用的。在手机启动时,首先需要由Bootloader(HTC手机上称作Hboot)引导 Linux及手机上各个硬件设备的驱动程序,之后才启动Android系统。所以其实我们会涉及到四种不同涵义的权限:

Android权限(Permission)

这指Android中的一系列"Android.Permission.*"对象,是本文的中心内容。

Google在Android框架内把各种对象(包括设备上的各类数据,传感器,拨打电话,发送信息,控制别的应用程序等)的访问权限进行了详细的划分,列出了约一百条"Android.Permission"。应用程序在运行前必须向Android系统声明它将会用到的权限,否则Android将会拒绝该应用程序访问通过该"Permission"许可的内容。

比方说,搜狗输入法提供了一个智能通讯录的功能,用户可以在输入联系人拼音的前几个字符,或首字母,输入法就能自动呈现相关联系人的名字。为了实现这个功能,输入法必须声明它需要读取手机中联系人的能力,也就是在相关代码中加上声明"android.permission.READ_CONTACTS"对象。

五种控制Android应用的权限的方法

图5 搜狗输入法的智能联系人功能

原生Android只提供了对"一刀切"式的管理,要么同意使用,否则就根本就不安装应用程序。当用户遇到希望使用程序的同时,又想禁止部分Permission的场合,他就无路可走。

于是,不少开发者就捣鼓出了"第三条道路";可惜的是,没有一种方法能同时做到既不需要将手机固件Root,又完全不涉及对原始应用程序进行反向工程的方法。

Root

Root指获得Android所在的Linux系统的Root(根)权限,有了根权限,你才能对Linux做出任意的修改。iOS中的越狱 (Jailbreak) 相当于获得iOS系统的Root权限(iOS是一种类Unix系统,和Linux都使用Root的概念)。在已Root的设备中,通常都是使用一个叫"Superuser"(简称SU)的应用程序来向许可的程序授以Root权限。

Bootloader的解锁(Unlock)

利用数字签名,Bootloader可以限定只有正确签名的系统可以被引导。在修改固件以获得Root以前,解锁Bootloader通常是必须的。安装第三方修改、编译的固件也需要解锁Bootloader。

基带(Radio)解锁

在Android系统中,基带是上层软件与手机中无线设备(手机网络,Wi-Fi,蓝牙等)的驱动程序之间的中介。国外的网络运营商很喜欢锁定基带,从而保证用户只能使用运营商自己指定的sim卡。在我国,锁定基带是非法的,手机制造商、网络运营商也不可以通过锁定基带的方法对待违约客户。iOS的"解锁"就是解锁iOS中的基带软件。

为什么要控制Android权限

鱼和熊掌不可兼得,Android的世界有很多自由,坏人也能自由地做坏事。它的生态系统很强调自主:用户可以自主地减小风险,仅使用官方市场的应用程序,也可以自主地解除安全限制,从而获得更多自由。因此,在遇到坏事的时候,用户也不得不自主一下:

1, 抵制不道德,乃至非法行为

几乎所有的Android安全软件都能对来电、信息进行控制,以减少骚扰。

另一方面,很多应用都会要求它们实际功能以外的权限,表现在非(主动)告知地搜集设备序列号,位置信息,诱使用户默认地上传联系人列表等方面。

更坏一点的应用程序,则会踏入犯罪的范畴,比如能偷偷发出扣费信息,或是作为黑客的偷窥工具。

2, 减少恶意软件的损害

恶意软件即便潜伏成功,也难以获得权限,从而减少损失。

3, 用户有权自主地在抑制应用程序的部分权限时,继续使用该应用程序,而只承担由于自行设置不当而带来的后果。

用户拥有设备的所有权,因此有权自主控制设备上的内容、传感器等对象的访问;同时有权(不)运行,(不)编译设备上的应用程序。

大多数应用程序在运行时,并未达成主动告知的义务,是失误;然而即使主动告知,用户还是可以不理会。

为什么Android官方市场的强制提醒权限的行为不属于主动告知:

通过Android官方市场,"打包安装器"安装应用程序时,所显示的"权限"仅是在安装包内AndroidManifest.xml声明的值,而非应用程序实际上会调用的内容。该值仅用来表明Android系统能向应用授予的最大可能的权限。即便一个"Hello World"式的应用程序,也可以在AndroidManifest.xml中声明所有可能的Android Permission。

这就是说,在AndroidManifest.xml中声明的值与应用程序实际调用的权限有关联,但不等同,且这种提示是由Android系统负责实施的强制行为。

正确的理解是:"应用程序(被迫地)让Android系统告知用户,它在AndroidManifest.xml中所声明的事项。"

这意味着应用程序在使用重要权限前,依然需要自行、主动地通知用户相关事宜。 

五种控制Android应用的权限的方法

图6  应用程序须要AndroidManifest.xml中声明调用到的权限

然而,即便只是让一半的应用程序达到以上的标准,也是不可能的。应用程序需要通过收集用户信息,程序的错误日志。从而统计用户的喜好,改进程序。另一方面,这也是发送精确广告但不追溯到用户身份信息的方式,这一点对于免费应用而言,是极其重要的。我们之所以能知道不同型号手机的占有率,应用软件的流行度,是与这样的统计不可分离的。

一旦每个应用程序都专业地主动发出提醒,不专业的用户(大多数用户都是不专业的)通常会将之视为如同海啸警报一般的危机。

这么做对谁都没有好处------用户方的隐私权是毋庸置疑的,然而应用程序方面的获取信息记录的需求也是无可阻挡的。如果每个用户都打算阻止,只会落得被迫接受不平等条约的下场,在温饱以前,不会有人考虑小康的问题。

于是,现状就变得有趣:用户人享受着相同的服务;其中大部分用户出于不知情/好意,默默地向开发者、广告商提供了信息,剩下的少数用户则能阻断这种劳务。而作为维持Android平台的信息商人Google,只确保在它的地盘里,不会发生触碰底线的事情。

一句话总结:

设备是我的,不管你怎么说,反正我说了算,但我说的话大多是不算数的。

顶:86 踩:88
对本文中的事件或人物打分:
当前平均分:-0.57 (402次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.44 (364次打分)
【已经有386人表态】
95票
感动
31票
路过
38票
高兴
44票
难过
45票
搞笑
33票
愤怒
45票
无聊
55票
同情
上一篇 下一篇
工业电动绞盘液压绞盘汇总

欣宇时代

编辑推荐

欣宇时代