我使用packageManager.getInstalledPackages(0)
PackageManager packageManager = getPackageManager();
List<PackageInfo> mApps = packageManager.getInstalledPackages(0);
檢索所有安裝的應用程序的列表,不返回所有的應用程序。但是,該列表不包含所有已安裝的應用程序,有些(如Twitter)缺失。
爲了測試這一點,我使用
int length = mApps.size();
for(int i=0; i<length; i++){
PackageInfo info = mApps.get(i);
Log.i(TAG, "Package: " + info.packageName);
}
com.twitter.android
和別人不登錄串中的,即使它們在手機上安裝。
PS:我也試過
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
這表明Twitter的,但沒有(明顯),可以不通過啓動器啓動迴歸過程,如「下載管理器」或「系統UI」。我需要一種可靠地返回系統應用程序和第三方應用程序的方法。
爲什麼你認爲'0'是'getInstalledPackages'的可接受參數?你確定它應該返回系統應用程序,而不僅僅是用戶安裝的應用程序? – Falmarri
使用'getInstalledPackages(PackageManager.GET_ACTIVITIES)'具有相同的結果。 – Nick