2013-08-28 69 views
1

我使用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

爲什麼你認爲'0'是'getInstalledPackages'的可接受參數?你確定它應該返回系統應用程序,而不僅僅是用戶安裝的應用程序? – Falmarri

+0

使用'getInstalledPackages(PackageManager.GET_ACTIVITIES)'具有相同的結果。 – Nick

回答

1

這是由於我的一個錯誤(在滿足某個條件後錯誤地從for -loop中突破)引起的,因此與PackageManager本身或我稱之爲的方式沒有任何關係。

+0

我面臨同樣的問題。你能告訴我你在上面的代碼中修復了哪個問題嗎? – venkat

相關問題