AndroidManifest.xml--android系统权限定义

1. 系统编译结束自动生成的java类,描述系统全部定义的权限java

out/target/common/R/android/Manifest.javaandroid

2. 权限检查方法数据库

frameworks/base/core/java/android/app/ContextImpl.java浏览器

context.checkCallingOrSelfPermission("android.permission.SENSOR") context 是ContextImpl。缓存

3. 申请的权限读取与保存安全

frameworks/base/services/java/com/android/server/pm/PackageManagerService.java网络

private void grantPermissionsLPw(PackageParser.Package pkg, boolean replace) {

........


if (allowed) {
                    if ((ps.pkgFlags&ApplicationInfo.FLAG_SYSTEM) == 0
                            && ps.permissionsFixed) {
                        // If this is an existing, non-system package, then
                        // we can't add any new permissions to it.
                        if (!allowedSig && !gp.grantedPermissions.contains(perm)) {
                            allowed = false;
                            // Except...  if this is a permission that was added
                            // to the platform (note: need to only do this when
                            // updating the platform).
                            final int NP = PackageParser.NEW_PERMISSIONS.length;
                            for (int ip=0; ip<NP; ip++) {
                                final PackageParser.NewPermissionInfo npi
                                        = PackageParser.NEW_PERMISSIONS[ip];
                                if (npi.name.equals(perm)
                                        && pkg.applicationInfo.targetSdkVersion < npi.sdkVersion) {
                                    allowed = true;
                                    Log.i(TAG, "Auto-granting " + perm + " to old pkg "
                                            + pkg.packageName);
                                    break;
                                }
                            }
                        }
                    }
                    if (allowed) {
                        if (!gp.grantedPermissions.contains(perm)) {
                            changedPermission = true;
                            gp.grantedPermissions.add(perm);
                            gp.gids = appendInts(gp.gids, bp.gids);
                        } else if (!ps.haveGids) {
                            gp.gids = appendInts(gp.gids, bp.gids);
                        }
                    } else {
                        Slog.w(TAG, "Not granting permission " + perm
                                + " to package " + pkg.packageName
                                + " because it was previously installed without");
                    }


.......

}

移除某些权限------SEAndroidapp

private void revokePermissions(......){
.....................................
HashSet<String> revokedPerms = mRevokePermissionPolicy.get(pkg.packageName);
        gp.effectivePermissions = (HashSet<String>) gp.grantedPermissions.clone();                                                                                                                                
        gp.revokedGids = null;
        if (revokedPerms != null) {        
            for (String grantedPerm : gp.grantedPermissions) {
                if (revokedPerms.contains(grantedPerm)) {
                    if (DEBUG_POLICY_REVOKE) {         
                        Slog.d(TAG, "Revoking effective permission " + grantedPerm
                               + " from " + pkg.packageName);                                                                                                                                                     
                    }
                    gp.effectivePermissions.remove(grantedPerm);
                    final BasePermission bp = mSettings.mPermissions.get(grantedPerm);
                    gp.revokedGids = appendInts(gp.revokedGids, bp.gids);                                                                                                                                         
                }
            }
        }
}

 

public static final String ACCOUNTS测试

这个常量定义了直接访问由帐号管理器管理的帐号的权限优化

常量值:android.permission-group.ACCOUNTS。

public static final String COST_MONEY

这个常量定义了可以让用户使用产生间接服务功能的权限。例如,这个权限组容许直接进行电话拨号、直接发送SMS消息等。

常量值:android.permission-group.COST_MONEY。

public static final String DEVELOPMENT_TOOLS

这个常量定义了相对开发特征的权限组。这些权限都不该该出如今普通的应用程序中,它们保护着仅用于开发目的的API。

常量值:android.permission-group.DEVELOPMENT_TOOLS

public static final String HARDWARE_CONTROLS

这个常量定义了用于提供直接访问设备上硬件的权限,包括声音、相机、振动器等。

常量值:android.permission-group.HARDWARE_CONTROLS

public static final String LOCALTION

这个常量定义了容许访问用户当前位置的权限。

常量值:android.permission-group.LOCATION

public static final String MESSAGES

这个常量定义了容许应用程序表明用户发送消息或中断用户正在接收的消息的权限。这个权限主要用于SMS/MMS消息,如接收或阅读MMS消息。

常量值:android.permission-group.MESSAGES

public static final String NETWORK

这个常量定义了提供访问网络服务的权限。主要权限是互联网访问,可是它也适用于访问或编辑网络配置,或者是其余相关的网络操做。

常量值:android.permission-group.NETWORK

public static final String PERSONAL_INFO

这个常量定义了提供访问用户私有数据的权限,如通信录、日历事件、电子邮件等。包括数据的读写权限(通常状况下,它应该表现出两种不一样的权限)。

常量值:android.permission-group.PERSONAL_INFO

public static final String PHONE_CALLS

这个常量定义了与访问和编辑电话状态相关联的权限:终端呼出的电话、阅读和编辑电话状态。要注意的是,电话拨号不在这个权限组中,由于它在更重要的“takin’yer moneys”(付费)组中

public static final String STORAGE

这个常量定义与SD卡访问相关的权限

常量值:android.permission-group.STORAGE

public static final String SYSTEM_TOOLS

这个常量定义与系统API相关的权限。其中有许可能是没有权限的用户所指望了解的,而且这样的权限应该被标记为“normal”保护级别,所以这些权限也不会显示。可是,这种权限可以用于提供访问操做系统的一些杂项功能,如写入全局的系统设置。

常量值:android.permission-group.SYSTEM_TOOLS

 

 

 

=============================非系统应用程序可申请权限===================================

访问登记属性 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,改变网络状态如是否能联网改变WiFi多播状态 android.permission.CHANGE_WIFI_MULTICAST_STATE,改变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是否在顶层访问帐户Gmail列表 android.permission.GET_ACCOUNTS,访问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,发送短信设置Activity观察其 android.permission.SET_ACTIVITY_WATCHER,设置Activity观察器通常用于monkey测试设置闹铃提醒 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,更新设备状态使用证书 android.permission.USE_CREDENTIALS,容许程序请求验证从AccountManager使用SIP视频 android.permission.USE_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在线同步设置

相关文章
相关标签/搜索