facebooktwitteryoutube
Welcome! Research Projects Android Engineering Linux Engineering Trip Gallery About This Site
in Trip - 12 Dec, 2015
by lzq8272587 - no comments
in Computer Engineering - 02 Dec, 2015
by lzq8272587 - no comments

我们都知道,在Android上的应用有”权限“这一说法。 具体而言,每次我们安装好一个应用之后,系统都会弹出一个框框,说这个应用将会访问以下权限,是不是要允许? 然后我们就点允许或者不允许,然后确定就是了。 在代码层面,这些权限是通过Manifest文件制定的。就像下面这样: 这些权限,称之为install permission,就是程序安装的时候设定的权限,之后会一直允许。   在Android 6.0中Google提出了新的授权模型,叫做real-time permission。简单来说,就是不仅要在安装的时候授权,还要在运行程序的时候,当app要使用某个权限的时候,弹出一个框框让用户自己去选择是否授权。   举例来说,比如要访问磁盘读写了,就会弹出一个框框,说现在要访问设备上的资料了,允不允许。   但是,并不是所有的permission都需要这样授权。有一些permission被称作危险的权限,例如读写磁盘,这类权限是需要运行时询问的;另一些权限,如Internet访问,被称作安全权限,只要安装的时候允许了就可以了。 对于危险权限的设定如下图: 另外要注意一点,如果对于一个ground的某个权限授权了,就意味着会对这个group里面所有的权限授权。   比如我们授权读,那么就顺便授予写权限了。   那么如何在代码里面实现这个功能? 我们需要在Activity里面动态的申请权限,并且在回调函数里面执行后续的工作。 例如我们写一个这个函数:   然后重写回调函数:     这样就会申请disk的读写操作,并且在写权限被授予之后,创建一个MyLogger,这个是我自定义的一个日志文件。 这样,运行的时候就会弹出一个框框,不过是在Android 6.0场景下: 参考:http://www.captechconsulting.com/blogs/runtime-permissions-best-practices-and-how-to-gracefully-handle-permission-removal