系统启动时,会实例化ActivityManagerService.java, 构造函数中会实例化AppOpsService
mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"), mHandler);
systemDir /data/system
所有的策略都保存在appops.xml文件中,systemready 时,会读取该文件,从而恢复关机前的设置
。shutdown时,会将缓存中的数据保存在该文件中。以确保下次开机设置仍然有效。
设置权限时,通过调用NotificationManagerService.java的以下接口函数
setNotificationsEnabledForPackage
最终通过调用AppOpsService 的接口函数setmode
mAppOps.setMode(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg,
enabled ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);