五种控制Android应用的权限的方法
这篇文章目的在于介绍Android系统上控制权限的方法,读者只要使用过Android,或是对智能机平台有所了解,就能看懂,不需要专门的编程知识。
1 为什么Android总是事无巨细地告诉你应用索取的每一项权限?
相比Apple,Microsoft严格控制生态系统(从苹果给开发者的"App Store Guideline"可见一斑),只允许通过官方应用商店安装应用,并对每份上传进行仔细地审查而言,Android的开放就意味着,Google需要向 用户提供一系列用于为自己负责的流程、工具。所以在安装应用前,Android总是要事无巨细地告诉你,应用肯需要控制什么权限。
同样,开发者也制作了一系列易用的工具,用以鉴别可疑的应用程序,或是控制权限。
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"对象。
3 权限控制的方法
这里开始介绍各种控制Android权限的办法。可惜的是,几乎所有的手段都需要对设备进行Root,如果不这么做,则需要付出不小代价。
App Shield(国内常见的名字:权限修改器)
它是一个需要付费的Android应用,其原理是修改应用程序的apk安装包,删除其中AndroidManifest.xml文件内,用于声明权限的 对应"Android.Permission.*"条目,然后再用一个公开的证书对安装包重新签名(需要允许"未知源"),这样一来,应用程序就不会向系 统申请原先所需的权限。当应用运行至相应的流程时,系统将直接拒绝,从而达到用户控制权限的目的。
对于已安装的应用,AppShield也会按照同样方法制作好apk安装包,然后让用户先卸载原始的应用,再安装调整过的应用。除了该应用数字签名外,用户可以随时通过执行同样的流程,将吊销的权限恢复。
4 自启动的控制
Android对后台服务有着最好的支持。
在Android中可以自由地开发一种称为'Service'的后台运行的对象,加上没有苹果公司对应用程序的严格限制。诸如QQ挂机,即时调用第三方应用程序之类的形式都可以轻易实现。
为了全面支持后台服务,也为了适应移动设备资源紧张,不得不经常清理内存的问题,应用可在系统中设置触发器,当系统发生了某个特定特定事件时(系统启动,拨打电话,收发信息,安装、卸载应用,插上电源等,或应用程序自行定义的事件),就会触发启动应用程序。
5 其他
Root带来的风险
有一个钻牛角尖的说法认为,一旦对设备进行了Root,便无安全一说,只要恶意程序一旦偷偷获得Root级别,一切都是空谈。
这种说法之所以钻牛角尖,是因为:一方面Android中的Root权限通常都是需要用户通过Superuser应用进行授权的,这已经够用,虽然不能 指望Superuser无懈可击;另一方面,控制Android权限主要是为了让应用程序在"灰色地带"的行为收敛一些,它们实际显然不是病毒等犯罪软 件。
点击原文地址查看详细
来源:oschina
链接:https://my.oschina.net/u/856651/blog/109119