Android权限操作之uses-permission详解
本文实例讲述了Android权限操作之uses-permission。分享给大家供大家参考,具体如下:
我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android的权限非常多。我们在开发软件的时候,也需要声明相应的权限,比如希望软件能发短信,需要声明软件调用短信的权限,否则软件运行的时候就会报错。
Android的权限在AndroidManifest.xml文件里配置。AndroidManifest文件中有四个标签与permission有关,它们分别是<permission>、<permission-group>、<permission-tree>和<uses-permission>。其中最常用的是<uses-permission>,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明<uses-permission>。
<?xmlversion="1.0"encoding="utf-8"?> <manifest> <application> </application> <uses-permission/> <permission/> <permission-tree/> <permission-group/> ... </manifest>
<permission>和<uses-permission>的作用相似,两者之间的不同之处,<uses-permission>是android预定义的权限,<permission>是自己定义的权限。<permission>用的相对较少,<permission-group> <permission-tree>这两个标签就更少见了,简单说<permission-group>就是声明一个标签,该标签代表了一组permissions,而<permission-tree>是为一组permissions声明了一个namespace。后面三个标签具体使用方法后续文章会有介绍。
<permission>定义方法如下:
<permissionandroid:description="stringresource" android:icon="drawableresource" android:label="stringresource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal"|"dangerous"| "signature"|"signatureOrSystem"]/>
上面代码来自官方文档:http://developer.android.com/guide/topics/manifest/permission-element.html。propectionLevel这个属性是必须声明,告诉系统通知用户的应用要求许可,或允许谁认为获得许可的情况下。permissionGroup这个是可选的,与<permission-group>配合使用。label,name和icon用于描述权限。<permission>的用法后面也会再详细分析。
<uses-permission>是我们用的最多的,官方文档定义方式如下:
<uses-permissionandroid:name="string"/>
例如,短信和电话权限的定义:
<uses-permissionandroid:name="android.permission.CALL_PHONE"/> <uses-permissionandroid:name="android.permission.SEND_SMS"/>
下面是收集到的<uses-permission>的资料,方便用的时候查找:
android.permission.ACCESS_CHECKIN_PROPERTIES
允许读写访问”properties”表在checkin数据库中,改值可以修改上传(Allowsread/writeaccesstothe“properties”tableinthecheckindatabase,tochangevaluesthatgetuploaded)
android.permission.ACCESS_COARSE_LOCATION
允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allowsanapplicationtoaccesscoarse(e.g.,Cell-ID,WiFi)location)
android.permission.ACCESS_FINE_LOCATION
允许一个程序访问精良位置(如GPS)(Allowsanapplicationtoaccessfine(e.g.,GPS)location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
允许应用程序访问额外的位置提供命令(Allowsanapplicationtoaccessextralocationprovidercommands)
android.permission.ACCESS_MOCK_LOCATION
允许程序创建模拟位置提供用于测试(Allowsanapplicationtocreatemocklocationprovidersfortesting)
android.permission.ACCESS_NETWORK_STATE
允许程序访问有关GSM网络信息(Allowsapplicationstoaccessinformationaboutnetworks)
android.permission.ACCESS_SURFACE_FLINGER
允许程序使用SurfaceFlinger底层特性(AllowsanapplicationtouseSurfaceFlinger'slowlevelfeatures)
android.permission.ACCESS_WIFI_STATE
允许程序访问Wi-Fi网络状态信息(AllowsapplicationstoaccessinformationaboutWi-Finetworks)
android.permission.ADD_SYSTEM_SERVICE
允许程序发布系统级服务(Allowsanapplicationtopublishsystem-levelservices).
android.permission.BATTERY_STATS
允许程序更新手机电池统计信息(Allowsanapplicationtoupdatethecollectedbatterystatistics)
android.permission.BLUETOOTH
允许程序连接到已配对的蓝牙设备(Allowsapplicationstoconnecttopairedbluetoothdevices)
android.permission.BLUETOOTH_ADMIN
允许程序发现和配对蓝牙设备(Allowsapplicationstodiscoverandpairbluetoothdevices)
android.permission.BRICK
请求能够禁用设备(非常危险)(Requiredtobeabletodisablethedevice(very*erous!).)
android.permission.BROADCAST_PACKAGE_REMOVED
允许程序广播一个提示消息在一个应用程序包已经移除后(Allowsanapplicationtobroadcastanotificationthatanapplication
packagehasbeenremoved)
android.permission.BROADCAST_STICKY
允许一个程序广播常用intents(Allowsanapplicationtobroadcaststickyintents)
android.permission.CALL_PHONE
允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(AllowsanapplicationtoinitiateaphonecallwithoutgoingthroughtheDialeruserinterfacefortheusertoconfirmthecallbeingplaced.)
android.permission.CALL_PRIVILEGED
允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allowsanapplicationtocallanyphonenumber,includingemergencynumbers,withoutgoingthroughtheDialeruserinterfacefortheusertoconfirmthecallbeingplaced)
android.permission.CAMERA
请求访问使用照相设备(Requiredtobeabletoaccessthecameradevice.)
android.permission.CHANGE_COMPONENT_ENABLED_STATE
允许一个程序是否改变一个组件或其他的启用或禁用(Allowsanapplicationtochangewhetheranapplicationcomponent(otherthanitsown)isenabledornot.)
android.permission.CHANGE_CONFIGURATION
允许一个程序修改当前设置,如本地化(Allowsanapplicationtomodifythecurrentconfiguration,suchaslocale.)
android.permission.CHANGE_NETWORK_STATE
允许程序改变网络连接状态(Allowsapplicationstochangenetworkconnectivitystate)
android.permission.CHANGE_WIFI_STATE
允许程序改变Wi-Fi连接状态(AllowsapplicationstochangeWi-Ficonnectivitystate)
android.permission.CLEAR_APP_CACHE
允许一个程序清楚缓存从所有安装的程序在设备中(Allowsanapplicationtoclearthecachesofallinstalledapplicationsonthedevice.)
android.permission.CLEAR_APP_USER_DATA
允许一个程序清除用户设置(Allowsanapplicationtoclearuserdata)
android.permission.CONTROL_LOCATION_UPDATES
允许启用禁止位置更新提示从无线模块(Allowsenabling/disablinglocationupdatenotificationsfromtheradio.)
android.permission.DELETE_CACHE_FILES
允许程序删除缓存文件(Allowsanapplicationtodeletecachefiles)
android.permission.DELETE_PACKAGES
允许一个程序删除包(Allowsanapplicationtodeletepackages)
android.permission.DEVICE_POWER
允许访问底层电源管理(Allowslow-levelaccesstopowermanagement)
android.permission.DIAGNOSTIC
允许程序RW诊断资源(AllowsapplicationstoRWtodiagnosticresources.)
android.permission.DISABLE_KEYGUARD
允许程序禁用键盘锁(Allowsapplicationstodisablethekeyguard)
android.permission.DUMP
允许程序返回状态抓取信息从系统服务(Allowsanapplicationtoretrievestatedumpinformationfromsystemservices.)
android.permission.EXPAND_STATUS_BAR
允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似WindowsMobile中的托盘程序(Allowsanapplicationtoexpandorcollapsethestatusbar.)
android.permission.FACTORY_TEST
作为一个工厂测试程序,运行在root用户(Runasamanufacturertestapplication,runningastherootuser.)
android.permission.FLASHLIGHT
访问闪光灯,android开发网提示HTCDream不包含闪光灯(Allowsaccesstotheflashlight)
android.permission.FORCE_BACK
允许程序强行一个后退操作是否在顶层activities(AllowsanapplicationtoforceaBACKoperationonwhateveristhetopactivity.)
android.permission.FOTA_UPDATE
暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.
android.permission.GET_ACCOUNTS
访问一个帐户列表在AccountsService中(AllowsaccesstothelistofaccountsintheAccountsService)
android.permission.GET_PACKAGE_SIZE
允许一个程序获取任何package占用空间容量(Allowsanapplicationtofindoutthespaceusedbyanypackage.)
android.permission.GET_TASKS
允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allowsanapplicationtogetinformationaboutthecurrentlyorrecentlyrunningtasks:athumbnailrepresentationofthetasks,whatactivitiesarerunninginit,etc.)
android.permission.HARDWARE_TEST
允许访问硬件(Allowsaccesstohardwareperipherals.)
android.permission.INJECT_EVENTS
允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android开发网提醒算是hook技术吧(Allowsanapplicationtoinjectuserevents(keys,touch,trackball)intotheeventstreamanddeliverthemtoANYwindow.)
android.permission.INSTALL_PACKAGES
允许一个程序安装packages(Allowsanapplicationtoinstallpackages.)
android.permission.INTERNAL_SYSTEM_WINDOW
允许打开窗口使用系统用户界面(Allowsanapplicationtoopenwindowsthatareforusebypartsofthesystemuserinterface.)
android.permission.INTERNET
允许程序打开网络套接字(Allowsapplicationstoopennetworksockets)
android.permission.MANAGE_APP_TOKENS
允许程序管理(创建、催后、z-order默认向z轴推移)程序引用在窗口管理器中(Allowsanapplicationtomanage(create,destroy,Z-order)applicationtokensinthewindowmanager.)
android.permission.MASTER_CLEAR
目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机
android.permission.MODIFY_AUDIO_SETTINGS
允许程序修改全局音频设置(Allowsanapplicationtomodifyglobalaudiosettings)
android.permission.MODIFY_PHONE_STATE
允许修改话机状态,如电源,人机接口等(Allowsmodificationofthetelephonystate–poweron,mmi,etc.)
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
允许挂载和反挂载文件系统可移动存储(Allowsmountingandunmountingfilesystemsforremovablestorage.)
android.permission.PERSISTENT_ACTIVITY
允许一个程序设置他的activities显示(Allowanapplicationtomakeitsactivitiespersistent.)
android.permission.PROCESS_OUTGOING_CALLS
允许程序监视、修改有关播出电话(Allowsanapplicationtomonitor,modify,orabortoutgoingcalls)
android.permission.READ_CALENDAR
允许程序读取用户日历数据(Allowsanapplicationtoreadtheuser'scalendardata.)
android.permission.READ_CONTACTS
允许程序读取用户联系人数据(Allowsanapplicationtoreadtheuser'scontactsdata.)
android.permission.READ_FRAME_BUFFER
允许程序屏幕波或和更多常规的访问帧缓冲数据(Allowsanapplicationtotakescreenshotsandmoregenerallygetaccesstotheframebufferdata)
android.permission.READ_INPUT_STATE
允许程序返回当前按键状态(Allowsanapplicationtoretrievethecurrentstateofkeysandswitches.)
android.permission.READ_LOGS
允许程序读取底层系统日志文件(Allowsanapplicationtoreadthelow-levelsystemlogfiles.)
android.permission.READ_OWNER_DATA
允许程序读取所有者数据(Allowsanapplicationtoreadtheowner'sdata)
android.permission.READ_SMS
允许程序读取短信息(AllowsanapplicationtoreadSMSmessages.)
android.permission.READ_SYNC_SETTINGS
允许程序读取同步设置(Allowsapplicationstoreadthesyncsettings)
android.permission.READ_SYNC_STATS
允许程序读取同步状态(Allowsapplicationstoreadthesyncstats)
android.permission.REBOOT
请求能够重新启动设备(Requiredtobeabletorebootthedevice.)
android.permission.RECEIVE_BOOT_COMPLETED
允许一个程序接收到ACTION_BOOT_COMPLETED广播在系统完成启动(AllowsanapplicationtoreceivetheACTION_BOOT_COMPLETEDthatisbroadcastafterthesystemfinishesbooting.)
android.permission.RECEIVE_MMS
允许一个程序监控将收到MMS彩信,记录或处理(AllowsanapplicationtomonitorincomingMMSmessages,torecordorperformprocessingonthem.)
android.permission.RECEIVE_SMS
允许程序监控一个将收到短信息,记录或处理(AllowsanapplicationtomonitorincomingSMSmessages,torecordorperformprocessingonthem.)
android.permission.RECEIVE_WAP_PUSH
允许程序监控将收到WAPPUSH信息(AllowsanapplicationtomonitorincomingWAPpushmessages.)
android.permission.RECORD_AUDIO
允许程序录制音频(Allowsanapplicationtorecordaudio)
android.permission.REORDER_TASKS
允许程序改变Z轴排列任务(AllowsanapplicationtochangetheZ-orderoftasks)
android.permission.RESTART_PACKAGES
允许程序重新启动其他程序(Allowsanapplicationtorestartotherapplications)
android.permission.SEND_SMS
允许程序发送SMS短信(AllowsanapplicationtosendSMSmessages)
android.permission.SET_ACTIVITY_WATCHER
允许程序监控或控制activities已经启动全局系统中(Allowsanapplicationtowatchandcontrolhowactivitiesarestartedgloballyinthesystem.)
android.permission.SET_ALWAYS_FINISH
允许程序控制是否活动间接完成在处于后台时(Allowsanapplicationtocontrolwhetheractivitiesareimmediatelyfinishedwhenputinthebackground.)
android.permission.SET_ANIMATION_SCALE
修改全局信息比例(Modifytheglobalanimationscalingfactor.)
android.permission.SET_DEBUG_APP
配置一个程序用于调试(Configureanapplicationfordebugging.)
android.permission.SET_ORIENTATION
允许底层访问设置屏幕方向和实际旋转(Allowslow-levelaccesstosettingtheorientation(actuallyrotation)ofthescreen.)
android.permission.SET_PREFERRED_APPLICATIONS
允许一个程序修改列表参数PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred()方法(AllowsanapplicationtomodifythelistofpreferredapplicationswiththePackageManager.addPackageToPreferred()andPackageManager.removePackageFromPreferred()methods.)
android.permission.SET_PROCESS_FOREGROUND
允许程序当前运行程序强行到前台(Allowsanapplicationtoforceanycurrentlyrunningprocesstobeintheforeground.)
android.permission.SET_PROCESS_LIMIT
允许设置最大的运行进程数量(Allowsanapplicationtosetthemaximumnumberof(notneeded)applicationprocessesthatcanberunning.)
android.permission.SET_TIME_ZONE
允许程序设置时间区域(Allowsapplicationstosetthesystemtimezone)
android.permission.SET_WALLPAPER
允许程序设置壁纸(Allowsapplicationstosetthewallpaper)
android.permission.SET_WALLPAPER_HINTS
允许程序设置壁纸hits(Allowsapplicationstosetthewallpaperhints)
android.permission.SIGNAL_PERSISTENT_PROCESSES
允许程序请求发送信号到所有显示的进程中(Allowanapplicationtorequestthatasignalbesenttoallpersistentprocesses)
android.permission.STATUS_BAR
允许程序打开、关闭或禁用状态栏及图标Allowsanapplicationtoopen,close,ordisablethestatusbaranditsicons.
android.permission.SUBSCRIBED_FEEDS_READ
允许一个程序访问订阅RSSFeed内容提供(AllowsanapplicationtoallowaccessthesubscribedfeedsContentProvider.)
android.permission.SUBSCRIBED_FEEDS_WRITE
系统暂时保留改设置,android开发网认为未来版本会加入该功能。
android.permission.SYSTEM_ALERT_WINDOW
允许一个程序打开窗口使用TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层(AllowsanapplicationtoopenwindowsusingthetypeTYPE_SYSTEM_ALERT,shownontopofallotherapplications.)
android.permission.VIBRATE
允许访问振动设备(Allowsaccesstothevibrator)
android.permission.WAKE_LOCK
允许使用PowerManager的WakeLocks保持进程在休眠时从屏幕消失(AllowsusingPowerManagerWakeLockstokeep
processorfromsleepingorscreenfromdimming)
android.permission.WRITE_APN_SETTINGS
允许程序写入API设置(Allowsapplicationstowritetheapnsettings)
android.permission.WRITE_CALENDAR
允许一个程序写入但不读取用户日历数据(Allowsanapplicationtowrite(butnotread)theuser'scalendardata.)
android.permission.WRITE_CONTACTS
允许程序写入但不读取用户联系人数据(Allowsanapplicationtowrite(butnotread)theuser'scontactsdata.)
android.permission.WRITE_GSERVICES
允许程序修改Google服务地图(AllowsanapplicationtomodifytheGoogleservicemap.)
android.permission.WRITE_OWNER_DATA
允许一个程序写入但不读取所有者数据(Allowsanapplicationtowrite(butnotread)theowner'sdata.)
android.permission.WRITE_SETTINGS
允许程序读取或写入系统设置(Allowsanapplicationtoreadorwritethesystemsettings.)
android.permission.WRITE_SMS
允许程序写短信(AllowsanapplicationtowriteSMSmessages)
android.permission.WRITE_SYNC_SETTINGS
允许程序写入同步设置(Allowsapplicationstowritethesyncsettings)
PS:关于AndroidManifest.xml文件相关属性功能可参考本站在线工具:
AndroidManifest功能与权限描述大全:
http://tools.jb51.net/table/AndroidManifest
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。