Android開發之通過包管理器獲取安裝應用信息


 最近在自己寫一個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取出數據展示:

  略。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM