android 自定义权限 permission
- 格式:doc
- 大小:58.50 KB
- 文档页数:3
Android权限管理之Permission权限机制及使⽤详解前⾔:最近突然喜欢上⼀句诗:“宠辱不惊,看庭前花开花落;去留⽆意,望天空云卷云舒。
” 哈哈~,这个和今天的主题⽆关,最近只要不学习总觉得⽣活中少了点什么,所以想着围绕着最近⾯试过程中讨论⽐较多的⼀个知识点Android 6.0 权限适配问题来进⾏学习,不过我不想直接进⼊这个主题,所以选择先去了解⼀下Android的Permission权限机制及使⽤Android权限机制:权限是⼀种安全机制。
Android权限主要⽤于限制应⽤程序内部某些具有限制性特性的功能使⽤以及应⽤程序之间的组件访问。
Android权限列表:访问登记属性android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写⼊登记check-in数据库属性表的权限获取错略位置android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的⽅式获取⽤户错略的经纬度信息,定位精度⼤概误差在30~1500⽶获取精确位置android.permission.ACCESS_FINE_LOCATION,通过GPS芯⽚接收卫星的定位信息,定位精度达10⽶以内访问定位额外命令android.permission.ACCESS_LOCATION_EXTRA_COMMANDS,允许程序访问额外的定位提供者指令获取模拟定位信息android.permission.ACCESS_MOCK_LOCATION,获取模拟定位信息,⼀般⽤于帮助开发者调试应⽤获取⽹络状态android.permission.ACCESS_NETWORK_STATE,获取⽹络信息状态,如当前的⽹络连接是否有效访问Surface Flinger android.permission.ACCESS_SURFACE_FLINGER,Android平台上底层的图形显⽰⽀持,⼀般⽤于游戏或照相机预览界⾯和底层模式的屏幕截图获取WiFi状态android.permission.ACCESS_WIFI_STATE,获取当前WiFi接⼊的状态以及WLAN热点的信息账户管理android.permission.ACCOUNT_MANAGER,获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限验证账户android.permission.AUTHENTICATE_ACCOUNTS,允许⼀个程序通过账户验证⽅式访问账户管理ACCOUNT_MANAGER相关信息电量统计android.permission.BATTERY_STATS,获取电池电量统计信息绑定⼩插件android.permission.BIND_APPWIDGET,允许⼀个程序告诉appWidget服务需要访问⼩插件的数据库,只有⾮常少的应⽤才⽤到此权限绑定设备管理android.permission.BIND_DEVICE_ADMIN,请求系统管理员接收者receiver,只有系统才能使⽤绑定输⼊法android.permission.BIND_INPUT_METHOD ,请求InputMethodService服务,只有系统才能使⽤绑定RemoteView android.permission.BIND_REMOTEVIEWS,必须通过RemoteViewsService服务来请求,只有系统才能⽤绑定壁纸android.permission.BIND_WALLPAPER,必须通过WallpaperService服务来请求,只有系统才能⽤使⽤蓝⽛android.permission.BLUETOOTH,允许程序连接配对过的蓝⽛设备蓝⽛管理android.permission.BLUETOOTH_ADMIN,允许程序进⾏发现和配对新的蓝⽛设备变成砖头android.permission.BRICK,能够禁⽤⼿机,⾮常危险,顾名思义就是让⼿机变成砖头应⽤删除时⼴播android.permission.BROADCAST_PACKAGE_REMOVED,当⼀个应⽤在删除时触发⼀个⼴播收到短信时⼴播android.permission.BROADCAST_SMS,当收到短信时触发⼀个⼴播连续⼴播android.permission.BROADCAST_STICKY,允许⼀个程序收到⼴播后快速收到下⼀个⼴播WAP PUSH⼴播android.permission.BROADCAST_WAP_PUSH,WAP PUSH服务收到后触发⼀个⼴播拨打电话android.permission.CALL_PHONE,允许程序从⾮系统拨号器⾥输⼊电话号码通话权限android.permission.CALL_PRIVILEGED,允许程序拨打电话,替换系统的拨号器界⾯拍照权限android.permission.CAMERA,允许访问摄像头进⾏拍照改变组件状态android.permission.CHANGE_COMPONENT_ENABLED_STATE,改变组件是否启⽤状态改变配置android.permission.CHANGE_CONFIGURATION,允许当前应⽤改变配置,如定位改变⽹络状态android.permission.CHANGE_NETWORK_STATE,改变⽹络状态如是否能联⽹android.permission.CHANGE_WIFI_MULTICAST_STATE,改变WiFi多播状态改变WiFi多播状态改变WiFi状态android.permission.CHANGE_WIFI_STATE,改变WiFi状态清除应⽤缓存android.permission.CLEAR_APP_CACHE,清除应⽤缓存清除⽤户数据android.permission.CLEAR_APP_USER_DATA,清除应⽤的⽤户数据底层访问权限android.permission.CWJ_GROUP,允许CWJ账户组访问底层信息android.permission.CELL_PHONE_MASTER_EX,⼿机优化⼤师扩展权限⼿机优化⼤师扩展权限控制定位更新android.permission.CONTROL_LOCATION_UPDATES,允许获得移动⽹络定位信息改变删除缓存⽂件android.permission.DELETE_CACHE_FILES,允许应⽤删除缓存⽂件删除应⽤android.permission.DELETE_PACKAGES,允许程序删除应⽤电源管理android.permission.DEVICE_POWER,允许访问底层电源管理应⽤诊断android.permission.DIAGNOSTIC,允许程序到RW到诊断资源禁⽤键盘锁android.permission.DISABLE_KEYGUARD,允许程序禁⽤键盘锁转存系统信息android.permission.DUMP,允许程序获取系统dump信息从系统服务状态栏控制android.permission.EXPAND_STATUS_BAR,允许程序扩展或收缩状态栏⼯⼚测试模式android.permission.FACTORY_TEST,允许程序运⾏⼯⼚测试模式使⽤闪光灯android.permission.FLASHLIGHT,允许访问闪光灯强制后退android.permission.FORCE_BACK,允许程序强制使⽤back后退按键,⽆论Activity是否在顶层android.permission.GET_ACCOUNTS,访问GMail账户列表访问账户Gmail列表获取应⽤⼤⼩android.permission.GET_PACKAGE_SIZE,获取应⽤的⽂件⼤⼩获取任务信息android.permission.GET_TASKS,允许程序获取当前或最近运⾏的应⽤允许全局搜索android.permission.GLOBAL_SEARCH,允许程序使⽤全局搜索功能硬件测试android.permission.HARDWARE_TEST,访问硬件辅助设备,⽤于硬件测试注射事件android.permission.INJECT_EVENTS,允许访问本程序的底层事件,获取按键、轨迹球的事件流安装定位提供android.permission.INSTALL_LOCATION_PROVIDER,安装定位提供安装应⽤程序android.permission.INSTALL_PACKAGES,允许程序安装应⽤内部系统窗⼝android.permission.INTERNAL_SYSTEM_WINDOW,允许程序打开内部窗⼝,不对第三⽅应⽤程序开放此权限访问⽹络android.permission.INTERNET,访问⽹络连接,可能产⽣GPRS流量结束后台进程android.permission.KILL_BACKGROUND_PROCESSES,允许程序调⽤killBackgroundProcesses(String).⽅法结束后台进程管理账户android.permission.MANAGE_ACCOUNTS,允许程序管理AccountManager中的账户列表管理程序引⽤android.permission.MANAGE_APP_TOKENS,管理创建、摧毁、Z轴顺序,仅⽤于系统⾼级权限android.permission.MTWEAK_USER,允许mTweak⽤户访问⾼级系统权限社区权限android.permission.MTWEAK_FORUM,允许使⽤mTweak社区权限软格式化android.permission.MASTER_CLEAR,允许程序执⾏软格式化,删除系统配置信息修改声⾳设置android.permission.MODIFY_AUDIO_SETTINGS,修改声⾳设置信息修改电话状态android.permission.MODIFY_PHONE_STATE,修改电话状态,如飞⾏模式,但不包含替换系统拨号器界⾯格式化⽂件系统android.permission.MOUNT_FORMAT_FILESYSTEMS,格式化可移动⽂件系统,⽐如格式化清空SD卡挂载⽂件系统android.permission.MOUNT_UNMOUNT_FILESYSTEMS,挂载、反挂载外部⽂件系统允许NFC通讯android.permission.NFC,允许程序执⾏NFC近距离通讯操作,⽤于移动⽀持永久Activity android.permission.PERSISTENT_ACTIVITY,创建⼀个永久的Activity,该功能标记为将来将被移除处理拨出电话android.permission.PROCESS_OUTGOING_CALLS,允许程序监视,修改或放弃播出电话读取⽇程提醒android.permission.READ_CALENDAR,允许程序读取⽤户的⽇程信息读取联系⼈android.permission.READ_CONTACTS,允许应⽤访问联系⼈通讯录信息屏幕截图android.permission.READ_FRAME_BUFFER,读取帧缓存⽤于屏幕截图com.android.browser.permission.READ_HISTORY_BOOKMARKS,读取浏览器收藏夹和历史记录读取收藏夹和历史记录读取输⼊状态android.permission.READ_INPUT_STATE,读取当前键的输⼊状态,仅⽤于系统读取系统⽇志android.permission.READ_LOGS,读取系统底层⽇志读取电话状态android.permission.READ_PHONE_STATE,访问电话状态读取短信内容android.permission.READ_SMS,读取短信内容读取同步设置android.permission.READ_SYNC_SETTINGS,读取同步设置,读取Google在线同步设置读取同步状态android.permission.READ_SYNC_STATS,读取同步状态,获得Google在线同步状态重启设备android.permission.REBOOT,允许程序重新启动设备开机⾃动允许android.permission.RECEIVE_BOOT_COMPLETED,允许程序开机⾃动运⾏接收彩信android.permission.RECEIVE_MMS,接收彩信接收短信android.permission.RECEIVE_SMS,接收短信接收Wap Push android.permission.RECEIVE_WAP_PUSH,接收WAP PUSH信息录⾳android.permission.RECORD_AUDIO,录制声⾳通过⼿机或⽿机的麦克排序系统任务android.permission.REORDER_TASKS,重新排序系统Z轴运⾏中的任务结束系统任务android.permission.RESTART_PACKAGES,结束任务通过restartPackage(String)⽅法,该⽅式将在外来放弃发送短信android.permission.SEND_SMS,发送短信android.permission.SET_ACTIVITY_WATCHER,设置Activity观察器⼀般⽤于monkey测试设置Activity观察其设置闹铃提醒com.android.alarm.permission.SET_ALARM,设置闹铃提醒设置总是退出android.permission.SET_ALWAYS_FINISH,设置程序在后台是否总是退出设置动画缩放android.permission.SET_ANIMATION_SCALE,设置全局动画缩放设置调试程序android.permission.SET_DEBUG_APP,设置调试程序,⼀般⽤于开发设置屏幕⽅向android.permission.SET_ORIENTATION,设置屏幕⽅向为横屏或标准⽅式显⽰,不⽤于普通应⽤设置应⽤参数android.permission.SET_PREFERRED_APPLICATIONS,设置应⽤的参数,已不再⼯作具体查看addPackageToPreferred(String) 介绍设置进程限制android.permission.SET_PROCESS_LIMIT,允许程序设置最⼤的进程数量的限制设置系统时间android.permission.SET_TIME,设置系统时间设置系统时区android.permission.SET_TIME_ZONE,设置系统时区设置桌⾯壁纸android.permission.SET_WALLPAPER,设置桌⾯壁纸设置壁纸建议android.permission.SET_WALLPAPER_HINTS,设置壁纸建议发送永久进程信号android.permission.SIGNAL_PERSISTENT_PROCESSES,发送⼀个永久的进程信号状态栏控制android.permission.STATUS_BAR,允许程序打开、关闭、禁⽤状态栏访问订阅内容android.permission.SUBSCRIBED_FEEDS_READ,访问订阅信息的数据库写⼊订阅内容android.permission.SUBSCRIBED_FEEDS_WRITE,写⼊或修改订阅内容的数据库显⽰系统窗⼝android.permission.SYSTEM_ALERT_WINDOW,显⽰系统窗⼝更新设备状态android.permission.UPDATE_DEVICE_STATS,更新设备状态使⽤证书E_CREDENTIALS,允许程序请求验证从AccountManager使⽤SIP视频E_SIP,允许程序使⽤SIP视频服务使⽤振动android.permission.VIBRATE,允许振动唤醒锁定android.permission.WAKE_LOCK,允许程序在⼿机屏幕关闭后后台进程仍然运⾏写⼊GPRS接⼊点设置android.permission.WRITE_APN_SETTINGS,写⼊⽹络GPRS接⼊点设置写⼊⽇程提醒android.permission.WRITE_CALENDAR,写⼊⽇程,但不可读取写⼊联系⼈android.permission.WRITE_CONTACTS,写⼊联系⼈,但不可读取写⼊外部存储android.permission.WRITE_EXTERNAL_STORAGE,允许程序写⼊外部存储,如SD卡上写⽂件写⼊Google地图数据android.permission.WRITE_GSERVICES,允许程序写⼊Google Map服务数据写⼊收藏夹和历史记录com.android.browser.permission.WRITE_HISTORY_BOOKMARKS,写⼊浏览器历史记录或收藏夹,但不可读取读写系统敏感设置android.permission.WRITE_SECURE_SETTINGS,允许程序读写系统安全敏感的设置项读写系统设置android.permission.WRITE_SETTINGS,允许读写系统设置项编写短信android.permission.WRITE_SMS,允许编写短信写⼊在线同步设置android.permission.WRITE_SYNC_SETTINGS,写⼊Google在线同步设置Android权限使⽤:1.)在 AndroidManifest.xml <manifest>标签内使⽤<uses-permission>声明使⽤某⼀个权限<uses-permission android:name="string"/>例如申请使⽤⽹络权限<uses-permission android:name="android.permission.INTERNET"/>如果特定的权限必须申明使⽤,如果没有申请使⽤就会报出Permission Denial错误,例如访问通讯录报出如下错误Caused by: ng.SecurityException: Permission Denial: reading com.androintacts.ContactsProvider2 uricontent://contacts/data/phones from pid=23763, uid=10036 requires android.permission.READ_CONTACTS解决此类错误我们只需根据提⽰添加对应的权限即可<uses-permission android:name="android.permission.READ_CONTACTS" />2.)⾃定义权限permission虽然这种使⽤场景不多见,但是在有些特定的场景下出于安全考虑就需要⾃定义权限了,⽐如两个APP之间需要共享数据⽽采⽤了ContentProvider,此时我们需要对⼀个app访问另外⼀个app的数据时需要添加权限申请。
android 权限命名规则Android权限命名规则在Android开发中,权限是一种安全机制,用于限制应用程序对系统资源和用户数据的访问。
为了确保应用程序的安全性和用户隐私的保护,Android系统对权限进行了严格的管理和控制。
在Android 开发中,权限的命名规则是非常重要的,它能够提供清晰的信息,帮助开发者和用户理解应用程序所需的权限以及其访问的范围。
本文将介绍Android权限命名规则的相关内容。
1. 权限名称应具有清晰的描述性。
权限名称应该能够准确地描述应用程序所需的权限以及其访问的资源。
例如,如果应用程序需要访问设备的摄像头,那么相应的权限名称应该是"android.permission.CAMERA",以明确地表示该权限用于访问摄像头。
2. 权限名称应使用小写字母和下划线。
为了保持一致性和易读性,Android权限的命名应该使用小写字母和下划线,并且不使用空格或其他特殊字符。
例如,"android.permission.CAMERA"是一个符合规范的权限名称。
3. 权限名称应以"android.permission."开头。
为了与其他类型的权限(如自定义权限)区分开来,Android权限的命名应以"android.permission."开头。
这样可以更容易地识别和管理系统权限。
例如,"android.permission.CAMERA"是一个以"android.permission."开头的系统权限。
4. 权限名称应具有一定的层次结构。
为了更好地组织和管理权限,Android权限的命名可以具有一定的层次结构。
例如,"android.permission-group.CAMERA"表示相机权限所属的权限组。
5. 权限名称应避免冲突和重复。
为了避免权限名称的冲突和重复,Android权限的命名应该具有唯一性。
Android权限列表permission说明需要在AndroidManifest.xml中定义相应的权限(以获取internet访问权限为例),如下:1.< uses-permission android:name =”android.permission.INTERNET” />注意在<application>也可以定义INTERNET权限,如下:1.< application android:permission =”android.permission.INTERNET” >android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values that getuploaded)android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID 或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows an application to access extra locationprovider commands)android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing) android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications to access information about networks)android.permission.ACCESS_SURFACE_FLINGER允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger's low level features)android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks) android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务(Allows an application to publish system-level services).android.permission.BATTERY_STATS允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)android.permission.BLUETOOTH允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices)android.permission.BLUETOOTH_ADMIN允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices)android.permission.BRICK请求能够禁用设备(非常危险)(Required to be able to disable the device (very dangerous!).)android.permission.BROADCAST_PACKAGE_REMOVED允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed)android.permission.BROADCAST_STICKY.允许一个程序广播常用intents(Allows an application to broadcast sticky intents)android.permission.CALL_PHONE允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)android.permission.CALL_PRIVILEGED允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)android.permission.CAMERA请求访问使用照相设备(Required to be able to access the camera device. )android.permission.CHANGE_COMPONENT_ENABLED_STATE允许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether an application component (other than its own) is enabled or not. )android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置,如本地化(Allows an application to modify the current configuration, such as locale. )android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态(Allows applications to change network connectivity state)android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)android.permission.CLEAR_APP_CACHE允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches of all installed applications on the device. )android.permission.CLEAR_APP_USER_DATA允许一个程序清除用户设置(Allows an application to clear user data)android.permission.CONTROL_LOCATION_UPDATES允许启用禁止位置更新提示从无线模块(Allows enabling/disabling location update notifications from the radio. )android.permission.DELETE_CACHE_FILES允许程序删除缓存文件(Allows an application to delete cache files)android.permission.DELETE_PACKAGES允许一个程序删除包(Allows an application to delete packages)android.permission.DEVICE_POWER允许访问底层电源管理(Allowslow-level access to power management)android.permission.DIAGNOSTIC允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁(Allows applications to disable the keyguard )android.permission.DUMP允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state dump information from system services.) android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序(Allows an application to expand or collapse the status bar. )android.permission.FACTORY_TEST作为一个工厂测试程序,运行在root用户(Run as a manufacturer test application, running as the root user. )android.permission.FLASHLIGHT访问闪光灯,Android开发网提示HTC Dream 不包含闪光灯(Allows access to the flashlight )android.permission.FORCE_BACK允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACK operation on whatever is the top activity. )android.permission.FOTA_UPDATE暂时不了解这是做什么使用的,Android开发网分析可能是一个预留权限.android.permission.GET_ACCOUNTS访问一个帐户列表在Accounts Service 中(Allows access to the list of accounts in the Accounts Service) android.permission.GET_PACKAGE_SIZE允许一个程序获取任何package占用空间容量(Allows an application to find out the space used by any package. ) android.permission.GET_TASKS允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)android.permission.HARDWARE_TEST允许访问硬件(Allows access to hardware peripherals. )android.permission.INJECT_EVENTS允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,Android开发网提醒算是hook技术吧(Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)android.permission.INSTALL_PACKAGES允许一个程序安装packages(Allows an application to install packages. )android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面(Allows an application to open windows that are for use by parts of the system user interface. )android.permission.INTERNET允许程序打开网络套接字(Allows applications to open network sockets)android.permission.MANAGE_APP_TOKENS允许程序管理(创建、催后、z-order默认向z轴推移)程序引用在窗口管理器中(Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )android.permission.MASTER_CLEAR目前还没有明确的解释,Android开发网分析可能是清除一切数据,类似硬格机android.permission.MODIFY_AUDIO_SETTINGS允许程序修改全局音频设置(Allows an application to modify global audio settings)android.permission.MODIFY_PHONE_STATE允许修改话机状态,如电源,人机接口等(Allows modification of the telephony state - power on, mmi, etc. )android.permission.MOUNT_UNMOUNT_FILESYSTEMS允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting file systems for removable storage. )android.permission.PERSISTENT_ACTIVITY允许一个程序设置他的activities显示(Allow an application to make its activities persistent. )android.permission.PROCESS_OUTGOING_CALLS允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abort outgoing calls) android.permission.READ_CALENDAR允许程序读取用户日历数据(Allows an application to read the user's calendar data.)android.permission.READ_CONTACTS允许程序读取用户联系人数据(Allows an application to read the user's contacts data.)android.permission.READ_FRAME_BUFFER允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shots and more generally get access to the frame buffer data)android.permission.READ_INPUT_STATE允许程序返回当前按键状态(Allows an application to retrieve the current state of keys and switches. ) android.permission.READ_LOGS允许程序读取底层系统日志文件(Allows an application to read the low-level system log files. )android.permission.READ_OWNER_DATA允许程序读取所有者数据(Allows an application to read the owner's data)android.permission.READ_SMS允许程序读取短信息(Allows an application to read SMS messages.)android.permission.READ_SYNC_SETTINGS允许程序读取同步设置(Allows applications to read the sync settings)android.permission.READ_SYNC_STATS允许程序读取同步状态(Allows applications to read the sync stats)android.permission.REBOOT请求能够重新启动设备(Required to be able to reboot the device. )android.permission.RECEIVE_BOOT_COMPLETED允许一个程序接收到ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )android.permission.RECEIVE_MMS允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incoming MMS messages, to record or perform processing on them. )android.permission.RECEIVE_SMS允许程序监控一个将收到短信息,记录或处理(Allows an application to monitor incoming SMS messages, to record or perform processing on them.)android.permission.RECEIVE_WAP_PUSH允许程序监控将收到WAP PUSH 信息(Allows an application to monitor incoming WAP push messages. ) android.permission.RECORD_AUDIO允许程序录制音频(Allows an application to record audio)android.permission.REORDER_TASKS允许程序改变Z轴排列任务(Allows an application to change the Z-order of tasks)android.permission.RESTART_PACKAGES允许程序重新启动其他程序(Allows an application to restart other applications)android.permission.SEND_SMS允许程序发送SMS短信(Allows an application to send SMS messages)android.permission.SET_ACTIVITY_WATCHER允许程序监控或控制activities已经启动全局系统中Allows an application to watch and control how activities are started globally in the system.android.permission.SET_ALWAYS_FINISH允许程序控制是否活动间接完成在处于后台时Allows an application to control whether activities are immediately finished when put in the background.android.permission.SET_ANIMATION_SCALE修改全局信息比例(Modify the global animation scaling factor.)android.permission.SET_DEBUG_APP配置一个程序用于调试(Configure an application for debugging.)android.permission.SET_ORIENTATION允许底层访问设置屏幕方向和实际旋转(Allows low-level access to setting the orientation (actually rotation) of the screen.)android.permission.SET_PREFERRED_APPLICATIONS允许一个程序修改列表参数PackageManager.addPackageToPreferred() 和PackageManager.removePackageFromPreferred()方法(Allows an application to modify the list of preferred applications with thePackageManager.addPackageToPreferred() andPackageManager.removePackageFromPreferred() methods.)android.permission.SET_PROCESS_FOREGROUND允许程序当前运行程序强行到前台(Allows an application to force any currently running process to be in the foreground.)android.permission.SET_PROCESS_LIMIT允许设置最大的运行进程数量(Allows an application to set the maximum number of (not needed) application processes that can be running. )android.permission.SET_TIME_ZONE允许程序设置时间区域(Allows applications to set the system time zone)android.permission.SET_WALLPAPER允许程序设置壁纸(Allows applications to set the wallpaper )android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸hits(Allows applications to set the wallpaper hints)android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序请求发送信号到所有显示的进程中(Allow an application to request that a signal be sent to all persistent processes)android.permission.STATUS_BAR允许程序打开、关闭或禁用状态栏及图标Allows an application to open, close, or disable the status bar and its icons.android.permission.SUBSCRIBED_FEEDS_READ允许一个程序访问订阅RSS Feed内容提供(Allows an application to allow access the subscribed feeds ContentProvider. )android.permission.SUBSCRIBED_FEEDS_WRITE系统暂时保留改设置,Android开发网认为未来版本会加入该功能。
Android添加⽤户组及⾃定义App权限的⽅法Android:4.4.4⼀、应⽤场景在Android设备上,现在我们外接了⼀个USB转串⼝的设备,设备节点是/dev/ttyUSB0:# ls -l /dev/ttyUSB0crw-rw---- 1 root root 188, 0 /dev/ttyUSB0信息显⽰:该设备的⽤户及其所属组别都是root,root的持有者对该设备具有读写权限。
但是,我们的App是被排除在root之外的,总之⽆法读写该设备。
⼀个解决⽅案是:赋予others以读写权限。
但是这样,任何其他第三⽅应⽤都可以访问我们的设备,安全性⼀丝不剩。
另⼀个解决⽅案就是:改变/dev/ttyUSB0所属的⽤户组:crw-rw---- 1 root selfgroup 188, 0 /dev/ttyUSB0哪个App想使⽤该设备,就把它加⼊到selfgroup 组中。
由于权限分发权在我们⼿中,安全性就得到了保障。
⼆、添加⾃定义⽤户组接下来就是怎么添加我们⾃⼰的⽤户组。
在Android中,每⼀个⽤户组都有⼀个唯⼀的ID号,定义在⽂件:system\core\include\private\android_filesystem_config.h/* This is the master Users and Groups config for the platform.* DO NOT EVER RENUMBER*/#define AID_ROOT 0 /* traditional unix root user */#define AID_SYSTEM 1000 /* system server */#define AID_RADIO 1001 /* telephony subsystem, RIL */#define AID_BLUETOOTH 1002 /* bluetooth subsystem */#define AID_GRAPHICS 1003 /* graphics devices */#define AID_INPUT 1004 /* input devices */#define AID_AUDIO 1005 /* audio devices */#define AID_CAMERA 1006 /* camera devices */仿照其添加⾃⼰的ID号(不允许重复)、并赋予它⼀个字符串的名字(后⽂⽤到):/** 第1步 */#define AID_SELF_GROUP 8011/** 第2步 */static const struct android_id_info android_ids[] = {{ "root", AID_ROOT, },{省略 .......................},/** ⾃定义组名 */{{ "selfgroup", AID_SELF_GROUP, },},}然后在Android源码/device⽬录下板级.rc⽂件中:编译boot.img并烧录,重启后查看节点组别已经变成⾃定义的“selfgroup”。
android权限(permission)⼤全1.android.permission.WRITE_USER_DICTIONARY允许应⽤程序向⽤户词典中写⼊新词2.android.permission.WRITE_SYNC_SETTINGS写⼊Google在线同步设置3.android.permission.WRITE_SOCIAL_STREAM读取⽤户的社交信息流4.android.permission.WRITE_SMS允许程序写短信5.android.permission.WRITE_SETTINGS允许程序读取或写⼊系统设置6.android.permission.WRITE_SECURE_SETTINGS允许应⽤程序读取或写⼊安全系统设置7.android.permission.WRITE_PROFILE允许程序写⼊个⼈资料数据.android.browser.permission.WRITE_HISTORY_BOOKMARKS允许⼀个应⽤程序写(但不可读)⽤户的浏览历史和书签9.android.permission.WRITE_GSERVICES允许程序修改Google服务地图10.android.permission.WRITE_EXTERNAL_STORAGE允许程序写⼊外部存储,如SD卡上写⽂件11.android.permission.WRITE_CONTACTS写⼊联系⼈,但不可读取12.android.permission.WRITE_CALL_LOG允许程序写⼊(但是不能读)⽤户的联系⼈数据13.android.permission.WRITE_CALENDAR允许程序写⼊⽇程,但不可读取14.android.permission.WRITE_APN_SETTINGS允许程序写⼊⽹络GPRS接⼊点设置15.android.permission.WAKE_LOCK允许程序在⼿机屏幕关闭后后台进程仍然运⾏16.android.permission.VIBRATE允许程序振动E_SIP允许程序使⽤SIP视频服务E_CREDENTIALS允许程序请求验证从AccountManager19.android.permission.UPDATE_DEVICE_STATS允许程序更新设备状态uncher.permission.UNINSTALL_SHORTCUT删除快捷⽅式21.android.permission.TRANSMIT_IR允许使⽤设备的红外发射器,如果可⽤22.android.permission.SYSTEM_ALERT_WINDOW允许程序显⽰系统窗⼝23.android.permission.SUBSCRIBED_FEEDS_WRITE允许程序写⼊或修改订阅内容的数据库24.android.permission.SUBSCRIBED_FEEDS_READ允许程序访问订阅信息的数据库22.android.permission.STATUS_BAR允许程序打开、关闭、禁⽤状态栏23.android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序发送⼀个永久的进程信号24.android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸建议26.android.permission.SET_TIME_ZONE允许程序设置系统时区27.android.permission.SET_TIME允许程序设置系统时间28.android.permission.SET_PROCESS_LIMIT允许程序设置最⼤的进程数量的限制29.android.permission.SET_PREFERRED_APPLICATIONS允许程序设置应⽤的参数,已不再⼯作具体查看addPackageToPreferred(String) 介绍30.android.permission.SET_POINTER_SPEED⽆法被第三⽅应⽤获得,系统权限31.android.permission.SET_ORIENTATION允许程序设置屏幕⽅向为横屏或标准⽅式显⽰,不⽤于普通应⽤32.android.permission.SET_DEBUG_APP允许程序设置调试程序,⼀般⽤于开发33.android.permission.SET_ANIMATION_SCALE允许程序设置全局动画缩放34.android.permission.SET_ALWAYS_FINISH允许程序设置程序在后台是否总是退出.android.alarm.permission.SET_ALARM允许程序设置闹铃提醒37.android.permission.SET_ACTIVITY_WATCHER允许程序设置Activity观察器⼀般⽤于monkey测试38.android.permission.SEND_SMS允许程序发送短信39.android.permission.SEND_RESPOND_VIA_MESSAGE允许⽤户在来电的时候⽤你的应⽤进⾏即时的短信息回复。
android自定义权限由于Android部分设计原理较为开放,可能通过Intent或PackageManager就可以解析处理调用其他应用的子类,所以在部分应用中需要做更多的安全处理,保证应用内部的稳定性和安全性。
Android123强烈大家仔细阅读本文,这将会对您在构架Android应用时减少一些隐患的发生。
稳定性: 部分类可能没有数值的传入将会导致可能初始化失败,造成Force Close等问题。
安全性: 其他应用调用本程序的SQL数据库等问题,可能会造成一些无法预料到的损失。
编辑本段回目录一、Android应用内部安全保护为了考虑内部部分敏感数据处理的安全性加入类ACL访问控制,当然使用了更加灵活的,比如UID、SID、PID等多种方式:今天Android开发网一起和大家谈论下开发过程中的处理细节。
1. 部分私有的配置信息,或相对轻量级的内容,可以使用SharedPreferences接口提供的相关方法处理,并设置为安全标志位私有MODE_PRIVATE,不过需要注意的是该方方仅能但进程调用。
2. SQLite的安全问题,对于Content Provider的处理权限,在Android中可以直接显示的声明,比如在androidmanifest.xml中声明读或写权限,在Provider节点中,声明android:writePermission或android:readPermission属性,当然其他程序声明了这些权限也可以访问,这时我们可以通过android:authorities属性限制一个类的访问,比如android:authorities=".android123.cwj" 。
最终类似Xml代码<providerandroid:name="cwjProvider"android:authorities=".android123.cwjProvider"android:writePermission=".android123.cwj.permission.WRITE_DATABASE"android:readPermission=".android123.cwj.permission.READ_DATABASE" />这里Android123提示大家,数据库本身的读写可以处理多线程问题,但是数据的先后可以考虑同步问题,设置android:multiprocess="true"属性来保证数据的正确性,相关问题不在本文讨论范围内,我们可能会在以后的内容中涉及这部分问题。
五种控制Android应用的权限的方法这篇文章目的在于介绍Android系统上控制权限的方法,读者只要使用过Android,或是对智能机平台有所了解,就能看懂,不需要专门的编程知识。
1 为什么Android总是事无巨细地告诉你应用索取的每一项权限?相比Apple,Microsoft严格控制生态系统(从苹果给开发者的"App Store Guideline"可见一斑),只允许通过官方应用商店安装应用,并对每份上传进行仔细地审查而言,Android的开放就意味着,Google需要向用户提供一系列用于为自己负责的流程、工具。
所以在安装应用前,Android总是要事无巨细地告诉你,应用肯需要控制什么权限。
同样,开发者也制作了一系列易用的工具,用以鉴别可疑的应用程序,或是控制权限。
图1 Android 官方市场会强制提醒用Andoird哪里开放了?在Android中,用户能自由从本地安装应用,自由地对SD卡进行操作,自由选择应用市场。
如果愿意放弃保修,用户还能轻易地实行root,解锁基带(baseband)。
只有一些产品会严密地锁定bootloader(如摩托罗拉)。
最重要的是,因为ASOP(Android源代码开放计划)的存在,绝大部分的Android代码都是开源的,开发者可以由此对Android系统进行深入的修改,甚至可以自行编写一个符合Android规范的系统实例(如Cyanogen Mod)。
正是因为ASOP,这篇文章才可能介绍多达5种原理不同的权限控制方法。
图2 Android开源计划的标志开放的风险不考虑Symbian,Windows Phone 6.5(及以下)平台,那么几乎所有的智能手机病毒都是Android平台的,甚至官方Android Market也闹过几次乌龙。
在国内水货横行的市场,情况更是火上浇油,不法业者可以在手机的ROM,甚至是bootloader中做好手脚,让用户有病无法医。
Android是一个多进程系统,在这个系统中,应用程序(或者系统的部分)会在自己的进程中运行。
系统和应用之间的安全性是通过Linux的facilities(工具,功能)在进程级别来强制实现的,比如会给应用程序分配user ID和Group ID。
更细化的安全特性是通过"Permission"机制对特定的进程的特定的操作进行限制,而"per-URI permissions"可以对获取特定数据的access专门权限进行限制。
安全架构Android安全架构中一个中心思想就是:应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。
这包括读或写用户的私有数据(如联系人数据或email数据),读或写另一个应用程序的文件,网络连接,保持设备处于非睡眠状态。
一个应用程序的进程就是一个安全的沙盒。
它不能干扰其它应用程序,除非显式地声明了"permissions",以便它能够获取基本沙盒所不具备的额外的能力。
它请求的这些权限"permissions"可以被各种各样的操作处理,如自动允许该权限或者通过用户提示或者证书来禁止该权限。
应用程序需要的那些"permissions"是静态的在程序中声明,所以他们会在程序安装时就被知晓,并不会再改变。
所有的Android应用程序(.apk文件)必须用证书进行签名认证,而这个证书的私钥是由开发者保有的。
该证书可以用以识别应用程序的作者。
该证书也不需要CA签名认证(注:CA就是一个第三方的证书认证机构,如verisign等)。
Android应用程序允许而且一般也都是使用self-signed证书(即自签名证书)。
证书是用于在应用程序之间建立信任关系,而不是用于控制程序是否可以安装。
签名影响安全性的最重要的方式是通过决定谁可以进入基于签名的permisssions,以及谁可以share 用户IDs。
android permission设置android.permission.ACCESS_CHECKIN_PROPERTIESn 允许读写访问”properties”表在checkin数据库中,改值可以修改上传n n android.permission.ACCESS_COARSE_LOCATIONn 允许一个程序访问CellID或WiFi来获取粗略的位置n n android.permission.ACCESS_FINE_LOCATIONn 允许一个程序访问精良位置(如GPS)n nandroid.permission.ACCESS_LOCATION_EXTRA_COMMANDSn 允许应用程序访问额外的位置提供命令n n android.permission.ACCESS_MOCK_LOCATIONn 允许程序创建模拟位置用于测试n nandroid.permission.ACCESS_NETWORK_STATEn 允许程序访问有关的网络信息n nandroid.permission.ACCESS_SURFACE_FLINGERn 允许程序使用SurfaceFlinger底层特性n nandroid.permission.ACCESS_WIFI_STATEn 允许程序访问Wi-Fi网络状态信息n nandroid.permission.ACCOUNT_MANAGERn 允许一个应用程序启动账户认证,该权限只能系统去设置n n android.permission.AUTHENTICATE_ACCOUNTSn 允许应用程序的验证账户扮演一个账户管理者n nandroid.permission.BATTERY_STATSn 允许程序更新手机电池统计信n nandroid.permission.BIND_APPWIDGETn 许应用告诉AppWidget哪个应用能够访问该AppWidget的数据n n android.permission.BIND_DEVICE_ADMINn 必须通过关机接收者的请求,来确保只有系统能够与之交互n n android.permission.BIND_INPUT_METHODn 必须通过InputMethodService的请求,来确保只有系统能够与之绑定n n android.permission.BIND_WALLPAPERn 必须通过WallpaperService的请求,来确保只有系统能够与之绑定n n android.permission.BLUETOOTHn 允许程序连接到已配对的蓝牙设备n nandroid.permission.BLUETOOTH_ADMINn 允许程序发现和配对蓝牙设备n n android.permission.BRICKn 请求能够禁用设备(非常危险)n n android.permission.BROADCAST_PACKAGE_REMOVEDn 允许应用发出一个程序包被移除的广播消息n n android.permission.BROADCAST_SMSn 允许应用发出一个收到短信的消息n nandroid.permission.BROADCAST_STICKYn 允许应用发出一个与intent相连的消息n nandroid.permission.BROADCAST_WAP_PUSHn 允许应用发出一个收到WAP PUSH的广播消息n nandroid.permission.CALL_PHONEn 允许一个程序初始化一个电话拨号,不需通过拨号用户界面需要用户确认n n android.permission.CALL_PRIVILEGEDn 允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认n n android.permission.CAMERAn 请求访问使用照相设备n nandroid.permission.CHANGE_COMPONENT_ENABLED_STATEn 允许一个程序是否改变一个组件或其他的启用或禁用n n android.permission.CHANGE_CONFIGURATIONn 允许一个程序修改当前设置,如本地化n nandroid.permission.CHANGE_NETWORK_STATEn 允许程序改变网络连接状态n nandroid.permission.CHANGE_WIFI_STATEn 允许程序改变Wi-Fi连接状态n nandroid.permission.CLEAR_APP_CACHEn 允许一个程序在设备中清除所有安装的程序的缓存n nandroid.permission.CLEAR_APP_USER_DATAn 允许一个程序清除用户数据n nandroid.permission.CONTROL_LOCATION_UPDATESn 允许启用禁止位置更新提示从无线模块n nandroid.permission.DELETE_CACHE_FILESn 允许程序删除缓存文件n nandroid.permission.DELETE_PACKAGESn 允许一个程序删除包n n android.permission.DEVICE_POWERn 允许访问底层电源管理n n android.permission.DIAGNOSTICn 允许程序RW诊断资源n nandroid.permission.DISABLE_KEYGUARDn 允许程序禁用键盘锁n n android.permission.DUMPn 允许程序返回状态抓取信息从系统服务n n android.permission.EXPAND_STATUS_BARn 允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序n n android.permission.FACTORY_TESTn 作为一个工厂测试程序,运行在root用户n n android.permission.FLASHLIGHTn 允许访问闪光灯,其中HTC Dream不包含闪光灯n n android.permission.FORCE_BACKn n 允许应用强制执行返回操作而不论是不是最终的activityn n n android.permission.GET_ACCOUNTSn 允许访问在Accounts Service中的一个帐户列表n n android.permission.GET_PACKAGE_SIZEn 允许一个程序获取任何package占用空间容量n nandroid.permission.GET_TASKSn 允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等n n android.permission.GLOBAL_SEARCHn n 可以被内容提供者用来允许使用全程搜索他们的数据n n android.permission.HARDWARE_TESTn 允许访问硬件n n android.permission.INJECT_EVENTSn 允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流n n android.permission.INSTALL_PACKAGESn 允许一个程序安装packagesn n android.permission.INTERNAL_SYSTEM_WINDOWn 允许打开窗口使用系统用户界面n n android.permission.INTERNETn 允许程序打开网络socketsn nandroid.permission.KILL_BACKGROUND_PROCESSESn n 允许应用去呼叫killBackgroundProcesses方法n n android.permission.MANAGE_ACCOUNTSn 允许程序去管理账户列表(在账户管理者中)n nandroid.permission.MANAGE_APP_TOKENSn 允许程序管理(创建、催后、 z-order默认向z轴推移)程序引用在窗口管理器中n n android.permission.MASTER_CLEARn n 目前还没有明确的解释n nandroid.permission.MODIFY_AUDIO_SETTINGSn 允许程序修改全局音频设置n nandroid.permission.MODIFY_PHONE_STATEn 允许修改话机状态,如电源,人机接口等n nandroid.permission.MODIFY_FORMAT_FILESYSTEMSn n 允许格式化可移除的存储仓库的文件系统n nandroid.permission.MOUNT_UNMOUNT_FILESYSTEMSn 允许挂载和反挂载文件系统可移动存储n nandroid.permission.PERSISTENT_ACTIVITYn 允许一个程序设置他的activities显示n nandroid.permission.PROCESS_OUTGOING_CALLSn 允许程序监视、修改有关播出电话n nandroid.permission.READ_CALENDARn 允许程序读取用户日历数据n n android.permission.READ_CONTACTSn 允许程序读取用户联系人数据n n android.permission.READ_FRAME_BUFFERn 允许程序屏幕波或和更多常规的访问帧缓冲数据n n android.permission.READ_HISTORY_BOOKMARKSn 允许应用去读取(非写)用户浏览历史和书签n n android.permission.READ_INPUT_STATEn 允许程序返回当前按键状态n nandroid.permission.READ_LOGSn 允许程序读取底层系统日志文件n n android.permission.READ_OWNER_DATAn 允许程序读取所有者数据n n android.permission.READ_PHONE_STATEn 允许读取电话的状态n nandroid.permission.READ_SMSn 允许程序读取短信息(Allows an application to read SMS messages.)n n android.permission.READ_SYNC_SETTINGSn 允许程序读取同步设置n nandroid.permission.READ_SYNC_STATSn 允许程序读取同步状态n n android.permission.REBOOTn 请求能够重新启动设备n n android.permission.RECEIVE_BOOT_COMPLETEDn 允许一个程序接收到 ACTION_BOOT_COMPLETED 广播在系统完成启动n n android.permission.RECEIVE_MMSn 允许一个程序监控将收到MMS彩信,记录或处理n n android.permission.RECEIVE_SMSn 允许程序监控一个将收到短信息,记录或处理n nandroid.permission.RECEIVE_WAP_PUSHn 允许程序监控将收到WAP PUSH信息n nandroid.permission.RECORD_AUDIOn 允许程序录制音频n n android.permission.REORDER_TASKSn 允许程序改变Z轴排列任务n n android.permission.RESTART_PACKAGESn 允许程序重新启动其他程序(此值已废弃使用)n n android.permission.SEND_SMSn 允许程序发送SMS短信n n android.permission.SET_ACTIVITY_WATCHERn 允许程序监控或控制activities已经启动全局系统中n n android.permission.SET_ALWAYS_FINISHn 允许程序控制是否活动间接完成在处于后台时n n android.permission.SET_ANIMATION_SCALEn 修改全局信息比例n n android.permission.SET_DEBUG_APPn 配置一个程序用于调试n n android.permission.SET_ORIENTATIONn 允许底层访问设置屏幕方向和实际旋转n n android.permission.SET_PREFERRED_APPLICATIONSn 允许一个程序修改列表参数PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred()方法n n n android.permission.SET_PROCESS_LIMITn 允许设置最大的运行进程数量n nandroid.permission.SET_TIMEn 允许应用设置系统时间n n android.permission.SET_TIME_ZONEn 允许程序设置系统时区时间n n android.permission.SET_WALLPAPERn 允许程序设置壁纸n n nandroid.permission.SET_WALLPAPER_HINTSn 允许程序设置壁纸hitsn nandroid.permission.SIGNAL_PERSISTENT_PROCESSESn 允许程序请求发送信号到所有显示的进程中n n android.permission.STATUS_BARn 允许程序打开、关闭或禁用状态栏及图标n nandroid.permission.SUBSCRIBED_FEEDS_READn 允许一个程序访问订阅RSS Feed内容提供n nandroid.permission.SUBSCRIBED_FEEDS_WRITEn 系统暂时保留改设置,n nandroid.permission.SYSTEM_ALERT_WINDOWn 允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层n n android.permission.UPDATE_DEVICE_STATSn 允许应用更新设备资料信息n nE_CREDENTIALSn 允许应用从管理器得到授权请求n n android.permission.VIBRATEn 允许访问振动设备n n android.permission.WAKE_LOCKn 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失n n android.permission.WRITE_APN_SETTINGSn 允许程序写入API设置n nandroid.permission.WRITE_CALENDARn 允许一个程序写入但不读取用户日历数据n nandroid.permission.WRITE_CONTACTSn 允许程序写入但不读取用户联系人数据n nandroid.permission.WRITE_EXTERNAL_STORAGEn 允许应用写(非读)用户的外部存储器n nandroid.permission.WRITE_GSERVICESn 允许程序修改Google服务地图n nandroid.permission.WRITE_HISTORY_BOOKMARKSn 允许应用写(非读)用户的浏览器历史和书签n nandroid.permission.WRITE_OWNER_DATAn 允许一个程序写入但不读取所有者数据n nandroid.permission.WRITE_SECURE_SETTINGSn 允许应用写或读当前系统设置n nandroid.permission.WRITE_SETTINGSn 允许程序读取或写入系统设置n n android.permission.WRITE_SMSn 允许程序写短信n n android.permission.WRITE_SYNC_SETTINGSn 允许程序写入同步设置n n。
android权限(permission)⼤全权限添加位置:权限代码:1.android.permission.WRITE_USER_DICTIONARY允许应⽤程序向⽤户词典中写⼊新词2.android.permission.WRITE_SYNC_SETTINGS写⼊Google在线同步设置3.android.permission.WRITE_SOCIAL_STREAM读取⽤户的社交信息流4.android.permission.WRITE_SMS允许程序写短信5.android.permission.WRITE_SETTINGS允许程序读取或写⼊系统设置6.android.permission.WRITE_SECURE_SETTINGS允许应⽤程序读取或写⼊安全系统设置7.android.permission.WRITE_PROFILE允许程序写⼊个⼈资料数据.android.browser.permission.WRITE_HISTORY_BOOKMARKS允许⼀个应⽤程序写(但不可读)⽤户的浏览历史和书签9.android.permission.WRITE_GSERVICES允许程序修改Google服务地图10.android.permission.WRITE_EXTERNAL_STORAGE允许程序写⼊外部存储,如SD卡上写⽂件11.android.permission.WRITE_CONTACTS写⼊联系⼈,但不可读取12.android.permission.WRITE_CALL_LOG允许程序写⼊(但是不能读)⽤户的联系⼈数据13.android.permission.WRITE_CALENDAR允许程序写⼊⽇程,但不可读取14.android.permission.WRITE_APN_SETTINGS允许程序写⼊⽹络GPRS接⼊点设置15.android.permission.WAKE_LOCK允许程序在⼿机屏幕关闭后后台进程仍然运⾏16.android.permission.VIBRATE允许程序振动E_SIP允许程序使⽤SIP视频服务E_CREDENTIALS允许程序请求验证从AccountManager19.android.permission.UPDATE_DEVICE_STATS允许程序更新设备状态uncher.permission.UNINSTALL_SHORTCUT删除快捷⽅式21.android.permission.TRANSMIT_IR允许使⽤设备的红外发射器,如果可⽤22.android.permission.SYSTEM_ALERT_WINDOW允许程序显⽰系统窗⼝23.android.permission.SUBSCRIBED_FEEDS_WRITE允许程序写⼊或修改订阅内容的数据库24.android.permission.SUBSCRIBED_FEEDS_READ允许程序访问订阅信息的数据库22.android.permission.STATUS_BAR允许程序打开、关闭、禁⽤状态栏23.android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序发送⼀个永久的进程信号24.android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸建议25.android.permission.SET_WALLPAPER允许程序设置桌⾯壁纸26.android.permission.SET_TIME_ZONE允许程序设置系统时区27.android.permission.SET_TIME允许程序设置系统时间28.android.permission.SET_PROCESS_LIMIT允许程序设置最⼤的进程数量的限制29.android.permission.SET_PREFERRED_APPLICATIONS允许程序设置应⽤的参数,已不再⼯作具体查看addPackageToPreferred(String) 介绍30.android.permission.SET_POINTER_SPEED⽆法被第三⽅应⽤获得,系统权限31.android.permission.SET_ORIENTATION允许程序设置屏幕⽅向为横屏或标准⽅式显⽰,不⽤于普通应⽤32.android.permission.SET_DEBUG_APP允许程序设置调试程序,⼀般⽤于开发33.android.permission.SET_ANIMATION_SCALE允许程序设置全局动画缩放34.android.permission.SET_ALWAYS_FINISH允许程序设置程序在后台是否总是退出.android.alarm.permission.SET_ALARM允许程序设置闹铃提醒37.android.permission.SET_ACTIVITY_WATCHER允许程序设置Activity观察器⼀般⽤于monkey测试38.android.permission.SEND_SMS允许程序发送短信39.android.permission.SEND_RESPOND_VIA_MESSAGE允许⽤户在来电的时候⽤你的应⽤进⾏即时的短信息回复。
androind manifest 权限定义
在AndroidManifest文件中,权限定义通常包括以下几个方面:
- Permission权限:指一系列“Android.Permission.*”对象。
在android.Manifest.permission.java类中可以找到Android定义的所有Permission权限。
如果应用程序需要访问Android通过“Permission”定义的内容,则该应用程序必须在AndroidManifest.xml中配置使用到的“Permission”,否则Android将会拒绝该应用程序访问。
- Root权限:指的是根权限,它允许应用程序执行一些需要超级用户权限的操作,例如修改系统设置或访问受保护的文件。
- Bootloader的解锁:指的是引导加载程序的解锁,它允许应用程序修改设备的引导加载程序,以便进行一些高级的操作,例如刷机或修改系统配置。
- Radio(基带)解锁:指的是基带的解锁,它允许应用程序修改设备的基带,以便进行一些高级的通信操作,例如修改信号强度或切换网络模式。
在定义权限时,开发者应该根据应用程序的需求和安全考虑,选择适当的权限,并在AndroidManifest文件中正确地声明它们。
这样可以确保应用程序的安全性和用户隐私得到保护。
Android总结篇系列:Android权限权限是⼀种安全机制。
Android权限主要⽤于限制应⽤程序内部某些具有限制性特性的功能使⽤以及应⽤程序之间的组件访问。
在Android开发中,基本上都会遇到联⽹的需求,我们知道都需要加上联⽹所需要的权限:1<uses-permission android:name="android.permission.INTERNET"/>实际上,在开发过程中,当我们使⽤了某些系统特性的功能,且此类特性需要包含相应权限时,如果在AndroidManifest.xml⽂件中相应申明,则会运⾏错误且提⽰:ng.SecurityException: Permission Denial ...根据此错误提⽰,⼀般情况下,在AndroidManifest.xml中通过 uses-permission 增加上相应权限即可。
⼀、Android权限列表:那么,Android中有哪些受限制性访问的特性呢?具体的特性对应所需要的权限名称⼜是什么呢?具体可以在Android官⽅⽂档中查的。
需要注意的是,不同的权限可能对应了不同的API等级,因此,可能会出现兼容性问题。
⼆、Android⾃定义权限:有时候,我们可能遇到如下需求场景:当⽤户在⼀个应⽤程序中进⾏某项操作时,会启动另外⼀个应⽤程序,最常见的时直接打开了另外⼀个应⽤程序,并进⼊其中某个Activity(如:有的应⽤中有推荐应⽤列表,当⽤户点击时程序会⾸先判断其他应⽤有⽆安装,若⽆则提⽰⽤户下载,如有则直接打开进⼊)。
有时候,处于安全等需要,此类操作需要加上受限制性的访问限制,那么怎么办呢?Android中为我们提供了⾃定义权限。
为了讲清⾃定义权限,先以不同的程序之间访问Activity增加权限限制为例。
假设应⽤程序A中有MainActivity,应⽤程序B中有AActivity和BActivity。
android permission 原理
Android权限系统是其安全机制的核心组成部分,它确保了应用程序只能访问其所需和应被允许的资源。
理解Android权限系统的原理对于开发者来说是至关重要的,因为它能帮助他们开发出更安全、更合规的应用。
Android权限系统基于两个主要的概念:权限(Permissions)和权限组(Permission Groups)。
权限是应用程序访问特定系统资源或执行特定操作的许可。
例如,一个应用程序可能需要“读取联系人”的权限来访问用户的联系人列表。
权限组则是一组相关权限的集合,它们被归类在一起,以便用户更容易理解和管理。
在应用程序安装时,系统会检查其声明的权限,并向用户显示这些权限。
用户必须显式地授予这些权限,应用程序才能访问相应的系统资源或执行相关操作。
这确保了用户对自己数据的控制权,并防止了恶意应用程序的未经授权访问。
Android权限系统还分为几个保护级别,包括正常权限(Normal Permissions)和危险权限(Dangerous Permissions)。
正常权限是那些对系统或用户数据影响较小的权限,它们在应用安装时自动授予。
而危险权限则可能对用户的隐私或设备安全造成较大影响,因此它们需要在应用运行时显式地向用户请求。
总的来说,Android权限系统是一个复杂但必要的安全机制。
它通过权限和权限组的概念,以及不同保护级别的设置,确保了应用程序的安全性和用户数据的隐私。
对于开发者来说,了解和遵守Android权限系统的规则是开发合规、安全应用的关键。
uses-permission的作用-概述说明以及解释1.引言1.1 概述在Android开发中,uses-permission是一种重要的权限声明方式。
Android系统为了保护用户的隐私和数据安全,对应用程序的权限进行了严格的管理。
使用uses-permission可以让应用声明自己所需要的权限,以便在安装时由用户或系统进行确认和授权。
简单来说,uses-permission用于告知Android系统,应用需要使用哪些特定的系统权限。
这些权限可以是访问设备硬件功能(如相机、GPS 等),访问外部存储,访问网络等。
通过申明使用uses-permission,应用可以在安装时向用户展示这些权限,并在用户同意授权后才能正常使用对应的功能。
相比于一次性要求用户赋予所有权限,使用uses-permission的方式具有一定的灵活性。
应用可以只在需要的时候获取特定权限,而不是一次性要求所有权限。
这对用户来说更加透明和可控,可以更好地保护个人隐私和数据安全。
在AndroidManifest.xml文件中,我们可以使用<uses-permission>元素来声明应用所需的权限。
在权限声明中,我们需要指定权限的名称,如android.permission.CAMERA,用来指明需要相机权限。
此外,我们还可以通过指定属性来控制权限的保护级别和授权方式。
总而言之,uses-permission在Android开发中扮演着重要的角色。
它不仅帮助应用正常使用所需的特定权限,也保护了用户的隐私和数据安全。
在接下来的文章中,我们将更深入地探索uses-permission的定义和使用场景,以及它在Android开发中的重要性和注意事项。
1.2文章结构文章结构部分的内容:在本篇文章中,将按照以下结构进行论述和分析uses-permission的作用。
首先,引言部分将对整篇文章进行概述,简要介绍uses-permission,并介绍文章的结构和目的。
Android权限列表permission说明public static final String BROADCAST_PACKAGE_REMOVED允许应用程序发出一个应用程序被删除的通知。
常量值:"android.permission.BROADCAST_PACKAGE_REMOVED"public static final String CALL_PHONE允许应用程序发起一个电话呼叫而不需要经拨号器用户界面确认。
常量值:"android.permission.CALL_PHONE"public static final String DUMP允许应用程序从系统服务获取状态存储信息。
常量值:"android.permission.DUMP"public static final String FOTA_UPDATE常量值:"android.permission.FOTA_UPDATE"public static final String GET_TASKS允许应用程序获得当前运行任务的信息:任务的简短描述,运行着什么activity等。
常量值:"android.permission.GET_TASKS"public static final String INSTALL_PACKAGES允许应用程序安装包。
常量值:"android.permission.INSTALL_PACKAGES"public static final String INTERNAL_SYSTEM_WINDOW允许应用程序打开作为系统用户界面的一部分的窗口。
常量值:"android.permission.INTERNAL_SYSTEM_WINDOW"public static final String RAISED_THREAD_PRIORITY允许应用程序获取提升的线程优先级,例如实时音频重放。
String ACCESS_CHECKIN_允许读取“属性”表的值。
String ACCESS_COARSE_L允许应用程序访问String ACCESS_FINE_LOC允许应用访问的精String ACCESS_LOCATION允许应用程序访问String ACCESS_NETWORK_允许程序访问网络String ACCESS_NOTIFICA标记许可希望访问String ACCESS_WIFI_STA允许应用程序访问String ACCOUNT_MANAGER允许应用程序调用String ADD_VOICEMAIL允许应用程序添加String ANSWER_PHONE_CA允许应用接听电话String BATTERY_STATS允许应用程序收集String BIND_ACCESSIBIL必须用一个要求A统可以绑定到它。
String BIND_APPWIDGET允许应用程序告诉据AppWidget服务String BIND_AUTOFILL_S必须由被要求Aut定到它。
String BIND_CARRIER_ME这个常量是在API代替String BIND_CARRIER_SE允许应用程序广播String BROADCAST_STICK允许应用程序广播String BROADCAST_WAP_P允许应用程序广播String CALL_PHONE允许应用程序发起为用户确认呼叫。
String CALL_PRIVILEGED允许拨打任何电话界面需要用户确认String CAMERA需要能够访问使用String CAPTURE_AUDIO_O允许应用程序捕获String CAPTURE_SECURE_允许应用程序捕获String CAPTURE_VIDEO_O允许应用程序捕获String CHANGE_COMPONEN允许应用程序更改用。
String CHANGE_CONFIGUR允许应用程序修改String CHANGE_NETWORK_允许应用程序改变String CHANGE_WIFI_MUL允许应用程序输入String CHANGE_WIFI_STA允许应用程序改变String CLEAR_APP_CACHE允许应用程序清除String CONTROL_LOCATIO允许启用/从无线禁String DELETE_CACHE_FI允许应用程序删除String DELETE_PACKAGES允许应用程序删除String DIAGNOSTIC允许应用程序RWString DISABLE_KEYGUAR允许应用程序禁用String DUMP允许应用程序检索String EXPAND_STATUS_B允许应用程序展开String FACTORY_TEST运行作为一个工厂String GET_ACCOUNTS允许访问的帐户服String GET_ACCOUNTS_PR允许访问的帐户服String GET_PACKAGE_SIZ允许找出任何pacString GET_TASKS这种不断的在不再String GLOBAL_SEARCH此权限可以在内容他们的数据。
Android中的Permission权限机制介绍Android 通过在每台设备上实施了基于权限的安全策略来处理安全问题,采⽤权限来限制安装应⽤程序的能⼒。
当某个权限与某个操作和资源对象绑定在⼀起,我们必须获得这个权限才能在对象上执⾏操作。
由于Android设计本⾝就是为Android开发⼈员着想,所以⼀切权限许可权由⽤户决定⽽不是⼿机制造商和平台提供商,但这不得不带来了开发者滥⽤权限,⿊客通过权限来进⾏恶意⾏为的风险,所以作为静态分析⼀个app是否为恶意软件的第⼀道关,获取并了解Android Permission权限意义是⼗分重⼤的。
权限策略Android 框架提供⼀套默认的权限存储在android.anifest.permission 类中,同时也允许我们⾃⼰定义新的权限。
我们在写应⽤程序时声明权限,程序安装时新权限被引⼊系统。
权限授权在应⽤程序被安装时执⾏。
当在设备上安装应⽤程序时,程序将请求完成任务必需的权限集合。
被请求的权限列单显⽰在设备屏幕上以待⽤户审查只有⽤户同意授权后,程序才会被安装,该应⽤程序获得所有被请求的权限。
所以,Android 系统实施的主要安全准则是应⽤程序只有得到权限许可后,才能执⾏可能会影响到系统其它部分的操作。
每个权限被定义成⼀个字符串,⽤来传达权限以执⾏某个特殊的操作。
所有权限可以分为两个类别:⼀种是执⾏程序时被应⽤程序所请求的权限,⼀种是应⽤程序的组件之间通信时被其它组件请求的权限。
开发者通过在AndroidManifest.xml⽂件中编写权限标签来定义以上两种类别的权限策略。
权限声明应⽤程序可以⽤⼀个<permission>元素来声明权限,⽤于限制访问特定组件或应⽤程序在安装程序时,这个已声明的权限被加⼊到系统中,具体可以参看:Android ⾃定义权限权限请求应⽤程序列出所有需要⽤来完成任务的权限,分别⽤ <use-permission>元素标识这些权限。
Android支持为应用程序自定义权限。
如果希望自己的程序组件(如Activity,BroacastReceiver)等被任意用户随意启动执行。
要使用自定义权限,首先在AndroidManifest.xml文件中声明它们,定义了权限之后,可以将它作为组件定义的一部分进行引用。
下面列举一个demo,详述自定义权限的过程:
首先创建一个工程CustomMadePermisson:
主Activity(启动Activity):
import android.app.Activity;
import android.os.Bundle;
import youtParams;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
layout.setOrientation(LinearLayout.HORIZONTAL);
TextView textView = new TextView(this);
textView.setText("欢迎来到徐志奇的博客!");
layout.addView(textView);
setContentView(layout);
}
}
复制代码
新建另外一个Activity,名称为Another,该Activity只是一个空Activity,用来验证添加启动权限后的启动效果:
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class Another extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.main);
Toast.makeText(this,"欢迎来到新的界面",Toast.LENGTH_LONG).show();
}
}
添加权限:
双击AndroidManifest.xml文件,打开permissions选项卡,在Permissions窗口中单击Add 按钮,选择Permission,然后单击ok按钮,添加一个新的Permission:
权限的特性:
Android:name
权限的名称,必填属性,通常应该遵循Android的命名方案(*.permission.*)但非必须。
android:protectionLevel
定义与权限相关的保护级别,必填属性。
必须选择一下四项之一:normal、dangerous、signature、signatureOrSystem。
android:permissionGroup
非必填属性,可以将权限放在一个组中,但对于自定义权限,尽量不要设置此属性了。
android:label
非必填属性,含义你应该明白。
android:description
非必填属性,含义你应该明白。
android:icon
非必填属性,含义你应该明白。
现在已经定义好了权限,接下来就是设置启动Activity的权限了。
要在活动上设置权限,可以将android:permission特性添加到AndroidManifest.xml文件中:
AndroidManifest.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="/apk/res/android"
package="com.xzq.custompermission" android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<permission android:protectionLevel="normal"
android:name="com.xzq.permission.zhongnantest"></permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="UNCHER" />
</intent-filter>
<activity android:name=".Another" android:label="@string/app_name"
android:permission="com.xzq.permission.zhongnantest">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="UNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
复制代码
新建测试工程Clint:
在该工程中创建一个Activity,用来测试上面添加了启动权限的Activity的启动情况。
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.main);
((Button) findViewById(R.id.button1))
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClassName("com.xzq.custompermission",
"com.xzq.custompermission.Another");
startActivity(intent);
}
});
}
}
复制代码。