獲取手機內所有應用程序

public class MainActivity extends AppCompatActivity {

    private PackageManager pManager;
    // 用來記錄應用程序的信息
    List<AppsItemInfo> list;
    private TextView tv;
    private List<String> data = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.textView);
        // 獲取圖片、應用名、包名
        pManager = MainActivity.this.getPackageManager();
        List<PackageInfo> appList = getAllApps(MainActivity.this);

        list = new ArrayList<>();

        for (int i = 0; i < appList.size(); i++) {
            PackageInfo pinfo = appList.get(i);
            AppsItemInfo shareItem = new AppsItemInfo();
            // 設置圖片
//            shareItem.setIcon(pManager
//                    .getApplicationIcon(pinfo.applicationInfo));
//            // 設置應用程序名字
//            shareItem.setLabel(pManager.getApplicationLabel(
//                    pinfo.applicationInfo).toString());
//            // 設置應用程序的包名
//            shareItem.setPackageName(pinfo.applicationInfo.packageName);
//
//            list.add(shareItem);
            data.add(pManager.getApplicationLabel(
                    pinfo.applicationInfo).toString());
            Log.e("Mr.Kang", "onCreate: "+pManager.getApplicationLabel(
                    pinfo.applicationInfo).toString()+"   ");
        }
        Log.e("Mr.Kang", "onCreate:===== "+data.size());


    }

    public static List<PackageInfo> getAllApps(Context context) {

        List<PackageInfo> apps = new ArrayList<PackageInfo>();
        PackageManager pManager = context.getPackageManager();
        // 獲取手機內所有應用
        List<PackageInfo> packlist = pManager.getInstalledPackages(0);
        for (int i = 0; i < packlist.size(); i++) {
            PackageInfo pak = (PackageInfo) packlist.get(i);

            // 判斷是否爲非系統預裝的應用程序
            // 這裏還可以添加系統自帶的,這裏就先不添加了,如果有需要可以自己添加
            // if()裏的值如果<=0則爲自己裝的程序,否則爲系統工程自帶
            if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
                // 添加自己已經安裝的應用程序
                apps.add(pak);
            }

        }
        return apps;
    }

    // 自定義一個 AppsItemInfo 類,用來存儲應用程序的相關信息
    private class AppsItemInfo {

        private Drawable icon; // 存放圖片
        private String label; // 存放應用程序名
        private String packageName; // 存放應用程序包名

        public Drawable getIcon() {
            return icon;
        }

        public void setIcon(Drawable icon) {
            this.icon = icon;
        }

        public String getLabel() {
            return label;
        }

        public void setLabel(String label) {
            this.label = label;
        }

        public String getPackageName() {
            return packageName;
        }

        public void setPackageName(String packageName) {
            this.packageName = packageName;
        }

    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章