- 获取系统安装应用程序信息
public void listApplication() {
HashMap<ApkClass, String> map = new HashMap<>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<PackageInfo> packageInfos = getPackageManager().getInstalledPackages(0);
for (PackageInfo info : packageInfos) {
if ((info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
String appName = info.applicationInfo.loadLabel(getPackageManager()).toString();
String packageName = info.packageName;
String firstTime = dateFormat.format(info.firstInstallTime);
String path = info.applicationInfo.sourceDir;
map.put(new ApkClass(appName, packageName, firstTime, path), firstTime);
}
}
LinkedHashMap<ApkClass, String> linkMap = new SortMap().sortMap(map);
for (ApkClass apk : linkMap.keySet()) {
appName = apk.getAppName();
FilePath = apk.getPath();
Log.e("最新的APK是: ", apk.getAppName() + "---" + apk.getFirstTime() +"---"+apk.getPath());
break;
}
}
- 对应用按照时间进行排序
public class SortMap {
public LinkedHashMap<ApkClass, String> sortMap(HashMap<ApkClass, String> map) {
for (ApkClass key : map.keySet()) {
System.out.println(key.getAppName() + "---" + map.get(key));
}
System.out.println("----------------------------------------------------------");
List<Map.Entry<ApkClass, String>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<ApkClass, String>>() {
@Override
public int compare(Map.Entry<ApkClass, String> t0, Map.Entry<ApkClass, String> t1) {
return Slefcompare(t0, t1);
}
});
LinkedHashMap<ApkClass, String> linkedMap = new LinkedHashMap<>();
for (Map.Entry<ApkClass, String> entrys : list) {
linkedMap.put(entrys.getKey(), entrys.getValue());
}
for (ApkClass key : linkedMap.keySet()) {
System.out.println(key + "---" + linkedMap.get(key));
}
return linkedMap;
}
private static int Slefcompare(Map.Entry<ApkClass, String> t0, Map.Entry<ApkClass, String> t1) {
int index;
String s1 = t0.getValue();
String s2 = t1.getValue();
int len = (s1.length() > s2.length()) ? s2.length() : s1.length();
for (index = 0; index < len; index++) {
if (s1.charAt(index) > s2.charAt(index)) {
return -1;
} else if (s1.charAt(index) < s2.charAt(index)) {
return 1;
}
}
if (index >= len) {
if (s1.length() > s2.length())
return -1;
else if (s1.length() < s2.length()) {
return 1;
} else
return 0;
}
return 0;
}
}