簡體   English   中英

獲取已安裝的 android 應用程序列表

[英]Get list of installed android applications

嗨,我想獲取用戶設備上所有已安裝應用程序的列表,我一直在谷歌搜索最長時間,但找不到我想要的內容,但這個鏈接是最接近的,並且工作正常,除了我是新手不明白如何使用 getPackages() 方法; 並用它創建一個列表

http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon

關於如何創建實際列表的任何幫助將是一個主要幫助我已經擁有所有代碼只是無法讓列表實際顯示感謝任何幫助

我最近在做這樣的事情。 我要預先說的一件事是確保並在單獨的線程中執行此操作——查詢應用程序信息很慢。 以下將為您提供所有已安裝應用程序的列表。 這將包括許多您可能不感興趣的系統應用程序。

PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(0);

為了將其限制為僅用戶安裝或更新的系統應用程序(例如地圖、GMail 等),我使用了以下邏輯:

List<ApplicationInfo> installedApps = new ArrayList<ApplicationInfo>();

for(ApplicationInfo app : apps) {
    //checks for flags; if flagged, check if updated system app
    if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
        installedApps.add(app);
    //it's a system app, not interested
    } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
        //Discard this one
    //in this case, it should be a user-installed app
    } else {
        installedApps.add(app);
    }
}

編輯:另外,要獲取應用程序的名稱和圖標(這可能是最耗時的——我還沒有對它進行任何真正的深入檢查——使用這個:

String label = (String)pm.getApplicationLabel(app);
Drawable icon = pm.getApplicationIcon(app);

installedApps 現在應該有你需要的應用程序的完整列表。 希望這會有所幫助,但您可能需要根據需要返回的應用程序稍微修改邏輯。 同樣,它很慢,但這只是您必須解決的問題。 如果您經常訪問數據庫,您可能希望在數據庫中構建數據緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM