我正在使用Package Manager類獲取所有已安裝應用程序的列表。我試着用下面的標誌來確定什麼是「用戶應用程序」與「系統應用」:如何確定應用程序抽屜中的Android應用程序列表
ApplicationInfo.FLAG_SYSTEM
ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
這個工作,但不是我想要的確切方式。我希望能夠篩選所有應用程序的列表以確定:此應用程序可在應用程序抽屜中看到嗎?
我不想與低級系統應用程序進行交互,因爲這可能會導致一些不良的副作用。但我想包含諸如「com.google.chrome」之類的內容,因爲它是應用程序抽屜中的應用程序,但在技術上作爲系統應用程序進行安裝。
我調試到Package Manager返回的ApplicationInfo列表中,發現某些應用程序的Int Icon值爲0或其他值(1254865等)。所以,我想:
List<ApplicationInfo> allApps = Utilities.getAllApps(mContext);
List<ApplicationInfo> visibleApps = new ArrayList<>();
for (ApplicationInfo appInfo : allApps) {
if (appInfo.icon != 0) {
visibleApps.add(appInfo);
}
}
這讓我更接近,但在我的股票模擬器,還有100「allApps」,而這個邏輯幫我鑽到54級的應用程序。但抽屜裏只有25個應用程序...