在我的应用程序中,我使用以下方法来获取系统中安装的应用程序列表。
packageManager.getInstalledPackages(0);
因此有时会出现以下异常-
AndroidRuntime: java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 526696 bytes
为了避免这种情况,我修改了代码如下,
List<ApplicationInfo> applicationInfoList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
请您帮助理解以下几点?
我猜测这些问题源于 你之前的问题,我将其标记为这个 10 年前的问题的重复项。
使用 getInstalledApplications() 而不是 getInstalledPackages() 是否有助于减少接收到的大小?
应用程序的数量应该少于软件包,因为“软件包”可能包含一些不符合“应用程序”资格的预安装项目。这可能不会产生很大的差异,但可能会有所帮助。
PackageManager.GET_META_DATA 标志在这里过滤什么?
在
getInstalledApplications()
的上下文中,包含 GET_META_DATA
将返回这些应用程序清单中 <meta-data>
元素内的任何 <application>
元素的详细信息。除非您需要此信息,否则我建议不要包含此标志。
更一般地说,您需要确定您想要实现的目标是什么,然后确定最佳的
PackageManager
方法,以返回最少的信息来实现您的目标。