我在做一個Android啓動作一介紹,以使爲自己的Android應用程序,而我設計的一部分,需要我知道有許多應用程序都安裝在用戶的設備上,並最好只計算這是正常的應用程序,可以將那些被啓動。我希望將這些數量的應用程序存儲在全局變量中。只考慮這個目標,將這個數字作爲變量檢索的最簡單方法是什麼?獲取Android設備上已安裝應用的數量?
5
A
回答
2
你可以使用的PackageManager
的getInstalledApplications()
方法。
返回已安裝的 設備上的所有應用程序包的
List
。如果標誌GET_UNINSTALLED_PACKAGES
已定,將返回的所有 應用,包括那些DONT_DELETE_DATA
(部分 安裝了數據目錄的應用程序)刪除列表。
像這樣的東西應該工作:
int numberOfInstalledApps = getPackageManager(0).getInstalledApplications().size();
要過濾系統的應用程序,你可以做這樣的事情:
int numberOfNonSystemApps = 0;
List<ApplicationInfo> appList = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo info : appList) {
if((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
numberOfNonSystemApps++;
}
}
2
的所有非系統應用程序都有一個啓動意圖使你只需要獲取所有應用程序的列表,並檢查其中有多少人具有啓動意圖,或者如果沒有,那麼該應用程序將是一個系統應用程序。所有應用程序的列表可以很容易地被包管理器檢索,然後我們通過的信息所有的應用程序,同時尋找可用的發射意圖。
至於建議by Darshan Patel: @Brad拉爾森♦
PackageManager pm = getPackageManager();
int nonSysAppsCount=0;
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo:packages){
if(pm.getLaunchIntentForPackage(packageInfo.packageName) != null){
String currAppName = pm.getApplicationLabel(packageInfo).toString();
nonSysAppsCount++;
//This app is a non-system app
}
else{
//System App
}
}
1
如果您正在尋找安裝了這個設備上的非系統應用程序,你可以做到以下幾點:
public static ArrayList<String> getInstalledApps() {
ArrayList<String> appList = new ArrayList<>();
List<PackageInfo> packList = getPackageManager().getInstalledPackages(0);
for (int i=0; i < packList.size(); i++) {
PackageInfo packInfo = packList.get(i);
if ( (packInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
String appName = packInfo.applicationInfo.loadLabel(getPackageManager()).toString();
appList.add(appName);
Log.e("App >" + Integer.toString(i), appName);
}
}
return appList;
}
所以,你可以將列表做:
int number = getInstalledApps().size();
此外,您可以通過調用啓動任何應用程序:
Intent myIntent = new Intent(Intent.ACTION_MAIN, null);
myIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List appsList = context.getPackageManager().queryIntentActivities(myIntent, 0);
相關問題
- 1. 獲取Android設備上安裝的應用程序列表 - C#
- 2. 如何獲取已安裝應用程序的設備的deviceid?
- 3. Android:獲取安裝在Android設備上的列表
- 4. 如何獲取設備上安裝的Android應用程序的包名
- 5. 當設備上已安裝fb時,Android Facebook SSO不起作用
- 6. 在我的Android設備上獲取有關已安裝應用程序的信息
- 7. 已簽名的apk不會安裝在我的Android設備上
- 8. 通過java代碼在Android設備上獲取已安裝應用程序的.apk文件
- 9. 在Android設備上修改已安裝的APK
- 10. 獲取已安裝的Android應用程序的列表
- 11. 在Android設備上安裝應用時出現的錯誤AndroidStudio
- 12. 如何確定在Android設備上安裝的應用程序?
- 13. 在Android設備上安裝應用程序的新手幫助
- 14. 如何獲取Android中已安裝應用程序的列表?
- 15. 獲取已安裝應用程序的列表android
- 16. 在多個Android設備上安裝apk
- 17. Android設備上安裝APK大
- 18. Android未簽名應用程序無法在設備上安裝
- 19. Eclipse在設備上安裝Android應用程序停止工作
- 20. 如何在Android設備上靜默安裝應用程序?
- 21. 錯誤Android設備上未安裝應用程序?
- 22. Android應用程序沒有安裝在設備上?
- 23. FlashDevelop無法在設備上安裝Android應用程序
- 24. 獲取Android設備上未讀郵件的數量
- 25. 如何獲取chromebook上已安裝的android應用程序包列表?
- 26. 無法在Android Studio中的Android設備上安裝Android應用程序
- 27. 獲取已安裝的應用程序數據問題
- 28. 在Android上獲取並顯示已安裝程序的列表
- 29. 獲取已安裝的Windows應用商店應用列表
- 30. 使用Eclipse的Android應用程序:應用程序不會安裝新鮮,因爲它已經在設備上
太感謝你了,這正是擔任我需要和它的第一件事,我發現它實際上做的工作。這是我可以在互聯網上看到的這個問題的最簡單的解決方案。 – MSC
不客氣:) – earthw0rmjim