Android读取第三方应用列表并卸载
2017-07-18 16:31
387 查看
工具类功能如标题所示,实现效果如上图,具体实现见代码。
/** * 安装一个apk文件 */ public static void install(Context context, File uriFile) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(uriFile), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } /** * 卸载一个app */ public static void uninstall(Context context, String packageName) { //通过程序的包名创建URI Uri packageURI = Uri.parse("package:" + packageName); //创建Intent意图 Intent intent = new Intent(Intent.ACTION_DELETE, packageURI); //执行卸载程序 context.startActivity(intent); } /** * 获取已安装非系统应用 * * @return */ public static List<AppInfo> scanInstallApp(Context mContext) { List<AppInfo> appInfos = new ArrayList<>(); PackageManager pm = mContext.getPackageManager(); // 获得PackageManager对象 List<ApplicationInfo> listAppcations = pm .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES); Collections.sort(listAppcations, new ApplicationInfo.DisplayNameComparator(pm));// 字典排序 for (ApplicationInfo app : listAppcations) { if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {//非系统程序 appInfos.add(getAppInfo(app, pm)); }//本来是系统程序,被用户手动更新后,该系统程序也成为第三方应用程序了 else if ((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { appInfos.add(getAppInfo(app, pm)); } } return appInfos; } /** * 构造一个AppInfo对象 ,并赋值 */ private static AppInfo getAppInfo(ApplicationInfo app, PackageManager pm) { AppInfo appInfo = new AppInfo(); appInfo.setAppName(pm.getApplicationLabel(app).toString());//应用名称 appInfo.setAppIcon(app.loadIcon(pm));//应用icon appInfo.setPkgName(app.packageName);//应用包名,用来卸载 File file = new File(app.sourceDir); float size = file.length(); DecimalFormat df = new DecimalFormat("#.00"); appInfo.setAppSize(df.format(size / (1024 * 1024)) + "M");//应用大小,M单位,保留两位小数 PackageInfo packageInfo = null; try { packageInfo = pm.getPackageInfo(app.packageName, 0); long lastUpdateTime = packageInfo.lastUpdateTime;//应用最近一次更新时间 appInfo.setUpdateDate(TimeUtil.time2Ago(lastUpdateTime));//将毫秒时间对比当前时间转换为多久以前 } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return appInfo; }
相关文章推荐
- android launch应用,读取app列表然后打开相应的app
- android读取word文档的方法:一,第三方应用打开
- android获取所有应用信息,判断系统应用或第三方应用,监听应用安装和卸载
- android快捷卸载第三方应用
- 过滤android应用列表(区分系统应用、第三方应用、sd卡中的应用)
- Android Launcher3 去掉应用列表后,在系统桌面拖动应用图标卸载应用
- Android 获取手机第三方应用列表
- ios有文件管理系统吗?自己开发的应用能不能像Android一样读取本地文件列表?
- Android之快捷卸载第三方应用
- android开发仿照第三方app打开方式,如何将你的app显示在打开列表,并且将文件复制到你的app应用内
- Android 卸载应用且获取应用的状态更新应用列表
- android 卸载应用、打开应用、获得系统中已安装应用列表
- android 第三方应用读取彩信附件
- Android应用读取Excel文件
- Android 必知必会 - 使用 Intent 打开第三方应用及验证可用性
- 值得推荐的Android应用性能检测工具列表
- Android 不让应用出现在最近使用APP列表
- Android实现获取系统应用列表
- android: 用ContentResolver读取自己应用的短信和手机通话记录(15)
- Android开发实现Launcher3应用列表修改透明背景的方法