Android開發之通過包管理器擷取安裝應用資訊

來源:互聯網
上載者:User

標籤:

 最近在自己寫一個APP,有一個模組需要擷取手機應用的一些資訊。坑還是有,但都基本踩過了,自己把他實現了出來,實現方法還是很需要掌握的。底部彈出的對話方塊中四個選項的實現不多做說明,主要講講如何擷取這些安裝的應用資訊。好了,不多說,看看:

擷取手機安裝應用資訊:

1.寫一個JavaBean,用於存放應用資訊,生產get,set方法。

public class AppBean {    private Drawable appIcon;    private String appName;    private int appSize;    private boolean isSd=false;    private boolean isSystem=false;    private String appPackageName;    public String getApkPath() {        return apkPath;    }    public void setApkPath(String apkPath) {        this.apkPath = apkPath;    }    private String apkPath;    public String getAppPackageName() {        return appPackageName;    }    public void setAppPackageName(String appPackageName) {        this.appPackageName = appPackageName;    }    public Drawable getAppIcon() {        return appIcon;    }    public void setAppIcon(Drawable appIcon) {        this.appIcon = appIcon;    }    public String getAppName() {        return appName;    }    public void setAppName(String appName) {        this.appName = appName;    }    public int getAppSize() {        return appSize;    }    public void setAppSize(int appSize) {        this.appSize = appSize;    }    public boolean isSd() {        return isSd;    }    public void setSd(boolean sd) {        isSd = sd;    }    public boolean isSystem() {        return isSystem;    }    public void setSystem(boolean system) {        isSystem = system;    }}

屬性寫的很清楚,這裡就不再多做注釋。

2.寫一個工具類,通過這個工具類,擷取到手機安裝應用的資訊。我們都知道,安卓的所有應用都在包管理中,基本上,一個應用對應著一個包資訊,所以,我們可以通過包管理器擷取,通過包管理器中getInstalledPackages(0);傳一個0,擷取到所有應用。具體實現代碼:

public static List<AppBean> getAllApk() {        List<AppBean>appBeanList=new ArrayList<>();        AppBean bean=null;        PackageManager packageManager= UIUtils.getContext().getPackageManager();        List<PackageInfo> list=packageManager.getInstalledPackages(0);        for (PackageInfo p:list) {            bean=new AppBean();            bean.setAppIcon(p.applicationInfo.loadIcon(packageManager));            bean.setAppName(packageManager.getApplicationLabel(p.applicationInfo).toString());            bean.setAppPackageName(p.applicationInfo.packageName);            bean.setApkPath(p.applicationInfo.sourceDir);            File file=new File(p.applicationInfo.sourceDir);            bean.setAppSize((int) file.length());            int flags=p.applicationInfo.flags;            //判斷是否是屬於系統的apk            if ((flags& ApplicationInfo.FLAG_SYSTEM)!=0){                bean.setSystem(true);            }else {                bean.setSd(true);            }            appBeanList.add(bean);        }        return appBeanList;    }

需要注意幾點:

  *擷取應用的應用程式名稱要通過packageManager.getApplicationLabel(p.applicationInfo).toString(),如果通過p.applicationInfo.name是拿不到應用程式名稱字的。

  *安卓中通過FlAG來標識應用是否是內建應用,判定方法如上。

  *UIUtils.getContext()是我封裝的方法,用於調用Context上下文。

3.通過JavaBean取出資料展示:

  略。

好了,展示資料就可以由自己隨意展示了,就寫到這,希望這篇文章對你的生活和學習有所協助。如果你想知道實現的效果,可以在下方評論留言,我會再下篇部落格更新~

 

Android開發之通過包管理器擷取安裝應用資訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.