zoukankan      html  css  js  c++  java
  • android项目获得手机里所有的应用程序

    首先要建立一个javabean用来存储应用程序信息,包括名称,包名,图标,存储位置,是不是系统程序

    然后用PackageManager来获取

    package com.itheima.bean;
    
    import android.graphics.drawable.Drawable;
    
    public class AppInfo {
        private Drawable icon;
        private String name;
        private String pageName;
    
        /**
         * true是在内部 false在sdcard
         */
        private boolean isRow;
        /**
         * true 是用户程序 false 是系统程序
         */
        private boolean isUser;
    
        public Drawable getIcon() {
            return icon;
        }
    
        public void setIcon(Drawable icon) {
            this.icon = icon;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPageName() {
            return pageName;
        }
    
        public void setPageName(String pageName) {
            this.pageName = pageName;
        }
    
        public boolean isRow() {
            return isRow;
        }
    
        public void setRow(boolean isRow) {
            this.isRow = isRow;
        }
    
        public boolean isUser() {
            return isUser;
        }
    
        public void setUser(boolean isUser) {
            this.isUser = isUser;
        }
    
        @Override
        public String toString() {
            return "AppInfo [name=" + name + ", pageName=" + pageName + ", isRow="
                    + isRow + ", isUser=" + isUser + "]";
        }
    
        
    
    
    }

    具体获取的实现

    package com.itheima.engine;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.content.Context;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    
    import com.itheima.bean.AppInfo;
    
    public class AppInfoProvider {
        public static List<AppInfo> getAppMessage(Context context) {
            List<AppInfo> list = new ArrayList<AppInfo>();
            PackageManager packageManager = context.getPackageManager();
            List<PackageInfo> installedPackages = packageManager
                    .getInstalledPackages(0);
            for (int i = 0; i < installedPackages.size(); i++) {
                AppInfo app = new AppInfo();
                //包名
                app.setPageName(installedPackages.get(i).packageName);
                //程序图标
                app.setIcon(installedPackages.get(i).applicationInfo
                        .loadIcon(packageManager));
                //程序名称
                app.setName(installedPackages.get(i).applicationInfo.loadLabel(
                        packageManager).toString());
                //应用程序的标示
                int flag = installedPackages.get(i).applicationInfo.flags;
                //判断是不是用户程序
                if ((flag & installedPackages.get(i).applicationInfo.FLAG_SYSTEM) == 0) {
                    //应用程序
                    app.setUser(true);
                } else {
                    //系统程序
                    app.setUser(false);
                }
                //判断是内部存储还是外部存储
                if ((flag & installedPackages.get(i).applicationInfo.FLAG_EXTERNAL_STORAGE) == 0) {
                    //内部
                    app.setRow(true);
                } else {
                    //外部
                    app.setRow(false);
                }
                list.add(app);
            }
    
            return list;
    
        }
    }
  • 相关阅读:
    Java的char是16位的unicode类型
    Leetcode_907. 子数组的最小值之和(单调栈)
    Leetcode_34. 在排序数组中查找元素的第一个和最后一个位置
    Leetcode_739. 每日温度(单调栈)
    Leetcode_1048. 最长字符串链
    Leetcode_877. 石子游戏(区间dp)
    Leetcode_面试题 17.24. 最大子矩阵
    Leetcode_面试题 17.08. 马戏团人塔(二维LIS)
    C#委托和事件的简单实例
    WPS快速下拉填充公式
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/5030606.html
Copyright © 2011-2022 走看看