我正在尝试跟踪应用程序从一开始就是如何安装的,到目前为止,我已经能够跟踪调用PackageManagerService的源代码,它扩展了PackageManager并调用方法installPackageWithVerification(),代码其中显示的内容仅供参考:
@Override
public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer, int flags, String installerPackageName, Uri verificationURI, ManifestDigest manifestDigest) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
final int uid = Binder.getCallingUid();
final int filteredFlags;
if (uid == Process.SHELL_UID || uid == 0) {
if (DEBUG_INSTALL) {
Slog.v(TAG, "Install from ADB");
}
filteredFlags = flags | PackageManager.INSTALL_FROM_ADB;
} else {
filteredFlags = flags & ~PackageManager.INSTALL_FROM_ADB;
}
final Message msg = mHandler.obtainMessage(INIT_COPY);
msg.obj = new InstallParams(packageURI, observer, filteredFlags, installerPackageName,
verificationURI, manifestDigest);
mHandler.sendMessage(msg);
}
上面最后3行代码创建了一个消息处理程序对象,基本上将包安装参数封装在消息中并发送它。我不清楚邮件的发送地点。
我去调试了android.os.Handler,它基本上定义了sendMessage(),所有我能找到的是这个消息是使用android.os.MessageQueue实例本地添加到队列中的
有人可以帮助我了解包装旁边会发生什么吗?甚至是NativeMessageQueue中的消息。
提前致谢!
答案 0 :(得分:0)
我已经明白了。我的错误,PackageHandler被定义在同一个文件的顶部。当您使用3K代码行浏览文件时很难找到:-P