一个Android应用默认情况下不拥有任何权限。即, 在默认情况下, 一个应用是没有权利去进行一些可能会造成不好影响的操作的.。这些不好的影响可能是对其它应用,操作系统,或者是用户.
如果应用需要一些额外的能力,则它需要在AndroidManifest.xml中静态地声明相应的权限.
如果应用没有在manifest中声明权限, 却使用了相应的功能, 在调用到相应功能的时候, 将会抛出异常.
比如程序要发送一个请求,却忘记加Internet权限, 那么在发送这个请求的时候程序就会抛出异常,一般不会catch这个异常,所以程序直接就崩溃了:
Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
在
Android 6.0 (API 23) 发布之前, 所有的权限都在安装应用的时候显示给用户,用户选择安装则表示全部接受这些权限, 之后无法撤销对这些权限的授权.
Android 6.0开始, 一部分比较危险的权限需要在程序运行时显式弹框,请求用户授权.
至于什么时候弹这个框,由应用程序自己决定.
对于其他权限,认为不是很危险,所以仍然保持原来的做法,在用户安装应用程序时就予以授权.
还需要注意的是,在设置中,对于应用的危险权限,用户可以选择性地进行授权或者关闭.
!--SD卡写入--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--用户唤醒机器: 打开app的界面后,如果不操作,app保持屏幕常亮。系统不会因为用户长时间不操作而关闭屏幕。 保持唤醒状态是安卓系统的一大特色,当你打开一个app退出后,其实并没有真正的关闭, 因为再次打开一个app所需的耗电量比让这个app从上次退出后保持唤醒状态要高,所以手机里的某个app保持唤醒状态。 --> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<!--允许应用在手机屏幕关闭后后台进程仍然运行--> <uses-permission android:name="android.permission.WAKE_LOCK" />
<!--允许一个程序打开窗口使用TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层--> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!--允许挂载和反挂载外部文件系统(SD卡) 1)当您使用自己的手机玩一款大型游戏时,可能会因为手机内存不足,导致游戏比较卡,或闪退。 但是如果你的手机可以挂载sd卡,也就是将您手机内存中数据放置到外存储卡上,这样就不会影响游戏的运行等等。 2)还有一种可能,如果手机连接电脑之后,选择手机上的USB大容量存储设备打开,这样就可以在pc端处理自己的存储卡的数据了, 但是这个时候的手机是不能读取手机存储卡内容的。如果这个时候使用了多重挂载sd卡之后就可以双向的处理内存卡的数据内容。 简单来讲,sd卡已挂载就代表你的sd卡和手机运作正常--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><!--允许程序访问震动--> <uses-permission android:name="android.permission.VIBRATE" />
<!--请求访问使用照相设备 --> <uses-permission android:name="android.permission.CAMERA" />
<!--过滤掉不支持camera和自动对焦功能的设备--> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />