赞
踩
接着上一节(三)的分析,看看上一节的PackageManagerService构造函数的代码如:
public PackageManagerService(Context context, Installer installer,
boolean factoryTest, boolean onlyCore)
{
// 前面省略...
// 第二节讨论过
mInstaller = installer;
synchronized (mInstallLock) {
// writer
synchronized (mPackages) {
mHandlerThread.start();
// 第三节讨论过
mHandler = new PackageHandler(mHandlerThread.getLooper());
// 本节分析内容
readPermissions();
}
// 后面省略...
}
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
进入readPermissions函数,代码如下:
在机器里面,指定路径有这么一些文件:
下面进入解析函数(这是重点):
private void readPermissionsFromXml(File permFile) {
FileReader permReader = null;
try {
permReader = new FileReader(permFile);
} catch (FileNotFoundException e) {
Slog.w(TAG, "Couldn't find or open permissions file " + permFile);
return;
}
try {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(permReader);
XmlUtils.beginDocument(parser, "permissions");
while (true) {
XmlUtils.nextElement(parser);
if (parser.getEventType() == XmlPullParser.END_DOCUMENT) {
break;
}
String name = parser.getName();
if ("group".equals(name)) {
String gidStr = parser.getAttributeValue(null, "gid");
if (gidStr != null) {
int gid = Integer.parseInt(gidStr);
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。