1、 编写一个判断是否为第三方程序的方法(可以查看“设置”——“应用程序”——“管理应用程序”的源代码,抄下这个方法):
/**
* 判断某个应用程序是不是三方的应用程序
*/
publicboolean filterApp(ApplicationInfoinfo) {
if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
returntrue;
} elseif ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
returntrue;
}
returnfalse;
}
2、 下面方法就可以获得所以应用程序啦,其中自定义的App为应用程序的实体类,定义了
packName(包名)、appName(程序名)、icon(程序图标)、isSysApp(是否为系统程序,要想获得系统程序或第三方程序,只要通过这个属性就可以啦)这四个属性。
/**
* 得到所有三方应用
*/
publicList<App>getAllTirApp(){
List<App> apps=new ArrayList<App>();
// PackageManager.GET_UNINSTALLED_PACKAGES为获取所有应用,包括那些卸载了,但是数据还没删除干净的程序
PackageManagerpackageManager=context.getPackageManager();
packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
List<ApplicationInfo>lisappinfo= packageManager.getInstalledApplications(PackageManager.GET_SHARED_LIBRARY_FILES);
for(ApplicationInfo app : lisappinfo){
if(filterApp(app)){
Appapplication=new App(); application.setAppName(app.loadLabel(packageManager).toString());
application.setIcon(app.loadIcon(packageManager));
application.setPackName(app.packageName);
application.setSysApp(!filterApp(app));
apps.add(application);
}
}
return apps;
}