Who provides implementation(s) of the PackageManag

2019-06-21 03:37发布

问题:

I am looking at source code for the PackageManager class and it is abstract as well as all the methods. Are manufacturers supposed to write a real implementation for it, or I am missing something?

回答1:

PackageManager is abstract and a concrete implementation needs to be provided in order to invoke instance methods. An implementation of this class can be found as a package private static class of ApplicationContext which itself is available in ContextImpl. (For source code see here). Note that this implementation of PackageManager is final and so cannot be overriden.

There is also a MockPackageManager implementation that might interest you.



回答2:

The real implementation for the PackageManager is PackageManagerService located at frameworks/base/services/java/com/android/server/

You can find the source code here in the GrepCode.



回答3:

It is ApplicationPackageManager, and it is created in ContextImpl.getPackageManager().



回答4:

For anyone stumbling upon this old question, go to the source (android.googlesource.com) https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/PackageManagerService.java, grepcode is long gone.



标签: android class