獲取手機(jī)應(yīng)用排除系統(tǒng)無(wú)法打開(kāi)的組件等舔,按照安裝順序排序
private void initData() {
if (mSwitchBean !=null)
mTv_showMsg.setText(getActivity().getString(mSwitchBean.getUserId()) +"---" +mSwitchBean.getTitleId() +"---" +mSwitchBean.getDescription() +"---" +mSwitchBean.getUrl());
? ? ? ? PackageManager pm = getActivity().getPackageManager();
// 查詢所有已經(jīng)安裝的應(yīng)用程序
? ? ? ? List appInfos= pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已刪除眷柔,但還有安裝目錄的
? ? ? ? // 創(chuàng)建一個(gè)類別為CATEGORY_LAUNCHER的該包名的Intent
? ? ? ? Intent resolveIntent =new Intent(Intent.ACTION_MAIN, null);
? ? ? ? resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
? ? ? ? // 通過(guò)getPackageManager()的queryIntentActivities方法遍歷,得到所有能打開(kāi)的app的packageName
? ? ? ? List? resolveinfoList = getActivity().getPackageManager()
????????.queryIntentActivities(resolveIntent, 0);
? ? ? ? Set allowPackages=new HashSet();
? ? ? ? for (ResolveInfo resolveInfo:resolveinfoList){
allowPackages.add(resolveInfo.activityInfo.packageName);
? ? ? ? }
for (ApplicationInfo app:appInfos) {
? ? ? ? ? ? if (allowPackages.contains(app.packageName)){
????????????????????????long installtime =0;
? ? ? ? ? ? ? ? try {
????????????????????????installtime = pm.getPackageInfo(app.packageName, 0).lastUpdateTime;
? ? ? ? ? ? ? ? }catch (PackageManager.NameNotFoundException e) {
????????????????????????e.printStackTrace();
? ? ? ? ? ? ? ? }
????????AppsBean appsBean =new AppsBean(app.packageName, app.loadIcon(pm), app.loadLabel(pm).toString(), installtime);
? ? ? ? ? ? ? ? Log.i("TAGt", "initData: "+installtime);
? ? ? ? ? ? ? ? mAppList.add(appsBean);
? ? ? ? ? ? ? ? sortData((ArrayList)mAppList);
? ? ? ? ? ? }
}
? ? ? ? mAdapter.notifyDataSetChanged();
? ? }
@Override
? ? public void setSwitchBean(SwitchBean switchBean) {
????????mSwitchBean = switchBean;
? ? ? ? super.setSwitchBean(switchBean);
? ? }
private void sortData(ArrayList mList) {
Collections.sort(mList, new Comparator() {
/**
*
? ? ? ? ? ? * @param lhs
? ? ? ? ? ? * @param rhs
? ? ? ? ? ? * @return an integer < 0 if lhs is less than rhs, 0 if they are
? ? ? ? ? ? *? ? ? ? equal, and > 0 if lhs is greater than rhs,比較數(shù)據(jù)大小時(shí),這里比的是時(shí)間
? ? ? ? ? ? */
? ? ? ? ? ? @Override
? ? ? ? ? ? public int compare(AppsBean lhs, AppsBean rhs) {
????????????????long date1 = lhs.getInstallTime();
? ? ? ? ? ? ? ? long date2 = rhs.getInstallTime();
? ? ? ? ? ? ? ? // 對(duì)時(shí)間字段進(jìn)行降序
? ? ? ? ? ? ? ? if (date1 > date2) {
????????????????????????return 1;
? ? ? ? ? ? ? ? }
????????????????????????return -1;
? ? ? ? ? ? }
????});
?}