Android系统设备管理剖析_第1页
Android系统设备管理剖析_第2页
Android系统设备管理剖析_第3页
Android系统设备管理剖析_第4页
Android系统设备管理剖析_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android系统设备管理剖析简介从Android 2.2 SDK起提供了一个可管理和操作设备的API叫DevicePolicyManager,使用这个API你可以接管手机的一些应用权限,这里以android 4.0.4为例从应用层和系统两方面来说明设备管理的工作原理,并总结相关设备管理的可行性。1、 应用层使用Android的设备管理功能需要实现广播监听、权限清单、设备操作代码三部分。1.1、广播监听1.1.1、设备管理器列表Android系统设置部分的的设备管理列表来自APK配置AndroidMinifest.xml文件注册的设备管理监听,见源码packagesappsSettingssrccomandroidsettingsDeviceAdminSettings.java的updateListvoid updateList() . mAvailableAdmins.clear(); List avail = getActivity().getPackageManager().queryBroadcastReceivers( new Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED), PackageManager.GET_META_DATA); int count = avail = null ? 0 : avail.size(); for (int i=0; icount; i+) ResolveInfo ri = avail.get(i); try DeviceAdminInfo dpi = new DeviceAdminInfo(getActivity(), ri); if (dpi.isVisible() | mActiveAdmins.contains(dpi.getComponent() mAvailableAdmins.add(dpi); catch (XmlPullParserException e) Log.w(TAG, Skipping + ri.activityInfo, e); catch (IOException e) Log.w(TAG, Skipping + ri.activityInfo, e); getListView().setAdapter(new PolicyListAdapter();1.1.2、实现广播监听类UMDeviceAdminpublic class UMDeviceAdmin extends DeviceAdminReceiver private static final String TAG = UMDeviceAdmin; public void onDisabled(Context context, Intent intent) super.onDisabled(context, intent); ULog.D(TAG, DeviceAdmin disabled); ClientRepairActivity.startActivity(context); public void onEnabled(Context context, Intent intent) super.onEnabled(context, intent); ULog.D(TAG, DeviceAdmin enabled); public void onPasswordChanged(Context context, Intent intent) super.onPasswordChanged(context, intent); ULog.D(TAG, Password changed); public void onReceive(Context context, Intent intent) super.onReceive(context, intent); 1.1.3、在AndroidManifest.xml中注册广播监听UMDeviceAdmin1.2、 权限清单 1.3、操作见官方文档相关接口:/intl/zh-cn/reference/android/app/admin/DevicePolicyManager.html2、 系统层系统层的支持是实现Android设备管理程序的基础,设备策略管理服务是应用程序具备操作设备管理设功能的核心。2.1 设备管理配置文件device_policies.xmldevice_policies.xml结构如下:admin name:对应设备管理程序监听器policies flags:对应权限清单的,如479=111011111b表示支持除USES_POLICY_SETS_GLOBAL_PROXY之外的所有用户策略权限,具体可参见frameworksbasecorejavaandroidappadminDeviceAdminInfo.java 中的public boolean usesPolicy(int policyIdent) return (mUsesPolicies & (1policyIdent) != 0;active-password之类的表示具体的用户策略当存在任何一个激活的设备管理程序的时候device_policies.xml存在,否则文件不存在,设备管理程序激活过程中在此文件登记其监听器和相关权限,具体过程见设备管理激活。2.2、设备管理服务DevicePolicyManagerService源码路径frameworksbaseservicesjavacomandroidserverDevicePolicyManagerService.javaDevicePolicyManagerService是android系统启动时启动的系统服务之一,DevicePolicyManager提供的设备管理操作接口均在这里实现。DevicePolicyManagerService启动时即加载device_policies.xml,见接口systemReady,得到设备管理监听器列表和用户设备管理策略(DeviceAdminInfo中定义,如USES_POLICY_LIMIT_PASSWORD、USES_POLICY_WATCH_LOGIN等)。2.3、设备管理激活设备管理的激活在设置(setting.apk)中实现,参见源码packagesappsSettingssrccomandroidsettingsDeviceAdminAdd.java中的mActionButton.setOnClickListener(new View.OnClickListener() public void onClick(View v) if (mAdding) try mDPM.setActiveAdmin(mDeviceAdmin.getComponent(), mRefreshing).);激活调用DevicePolicyManagerService的setActiveAdmin,将指定应用程序设备管理监听器添加到活动的设备管理监听器列表中并更新(添加到)用户策略管理配置文件device_policies.xml2.4、取消设备管理激活同上调用DevicePolicyManagerService的removeActiveAdmin,将当前设备管理监听器从活动的设备管理监听器列表中移除并更新(移除从)用户策略管理配置文件device_policies.xml,当所有设备管理监听都取消激活时删除device_policies.xml3、总结1、 实现的设备管理执行的设备管理策略是以用户策略的形式存在,并保存在用户策略配置文件中;2、 实现设备管理自动激活的前提是在系统datasystem目录下内置具相应设备管理广播监听和相关权限的device_policies.xml文件。3、因为DevicePolicyManagerService中只

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论