Android中对已安装应用的管理实现
程序员文章站
2022-05-29 12:55:24
获取、管理手机中已安装的所有应用信息 1、创建应用的实体类AppInfo,属性有应用的名称、包名、图标、第一次安装时间和版本名称 public class AppInfo { private String name ;//应用名称 private String packageName ;//应用包名 ......
获取、管理手机中已安装的所有应用信息
1、创建应用的实体类appinfo,属性有应用的名称、包名、图标、第一次安装时间和版本名称
public class appinfo { private string name ;//应用名称 private string packagename ;//应用包名 private drawable icon ;//应用图标 private long firstinstalltime ;//应用第一次安装的时间 private string versionname ;//应用的版本名称 public string getname() { return name; } public string getpackagename() { return packagename; } public drawable geticon() { return icon; } public long getfirstinstalltime() { return firstinstalltime; } public string getversionname() { return versionname; } public appinfo(string name, string packagename, drawable icon, long firstinstalltime, string versionname) { this.name = name; this.packagename = packagename; this.icon = icon; this.firstinstalltime = firstinstalltime; this.versionname = versionname; } }
2、获取所有应用信息的方法
public static list<appinfo> getappinfos(context context){ list<appinfo> appinfolist = new arraylist<>() ; //获取包管理器 packagemanager pm = context.getpackagemanager(); //获取已安装的包信息 list<packageinfo> packageinfos = pm.getinstalledpackages(0); for(packageinfo packageinfo : packageinfos){ //获取包名 string packagename = packageinfo.packagename; //获取应用图标 drawable icon = packageinfo.applicationinfo.loadicon(pm); //获取应用的名称 string name = packageinfo.applicationinfo.loadlabel(pm).tostring(); //获取第一次安装的时间 long firstinstalltime = packageinfo.firstinstalltime; //获取版本号 int versioncode = packageinfo.versioncode; //获取版本名称 string versionname = packageinfo.versionname; appinfo appinfo = new appinfo(name,packagename,icon,firstinstalltime,versionname); appinfolist.add(appinfo); } return appinfolist ; }
3、打开应用方法
public static void openapplication(context context,string packagename) { intent intent=isexit(context,packagename); if(intent==null){ system.out.println("app not found!....:"+packagename); } context.startactivity(intent); } /** * 通过packagename判断应用是否安装 * @param context * * @return 跳转的应用主activity intent * */ public static intent isexit(context context,string pk_name){ //获取包管理器 packagemanager packagemanager = context.getpackagemanager(); //通过包名获取intent intent it= packagemanager.getlaunchintentforpackage(pk_name); return it; }
4、进入应用详情页面
public static void showinstalledappdetails(context context, string packagename) { intent intent = new intent(); final int apilevel = build.version.sdk_int; if (apilevel >= 9) { // 2.3(apilevel 9)以上,使用sdk提供的接口 intent.setaction(settings.action_application_details_settings); uri uri = uri.fromparts("package", packagename, null); intent.setdata(uri); } else { // 2.3以下,使用非公开的接口(查看installedappdetails源码) // 2.2和2.1中,installedappdetails使用的app_pkg_name不同。 final string apppkgname = (apilevel == 8 ? "pkg" : "com.android.settings.applicationpkgname"); intent.setaction(intent.action_view); intent.setclassname("com.android.settings", "com.android.settings.installedappdetails"); intent.putextra(apppkgname, packagename); } context.startactivity(intent); }
5、卸载应用
public static void uninstallapplication(context context,string packagename){ intent intent = new intent() ; intent.setaction("android.intent.action.delete"); intent.addcategory("android.intent.category.default"); intent.setdata(uri.parse("package:"+packagename)); context.startactivity(intent); }
上一篇: 浅谈fail-fast机制
推荐阅读
-
解析iOS应用开发中对设计模式中的抽象工厂模式的实现
-
adnroid已安装应用中检测某应用是否安装的代码实例
-
android轻松管理安卓应用中的log日志 发布应用时log日志全部去掉的方法
-
Android中应用前后台切换监听的实现详解
-
Android 静默方式实现批量安装卸载应用程序的深入分析
-
Android7.0实现开机后台安装应用----rc文件的使用及权限问题
-
使用python编写批量卸载手机中安装的android应用脚本
-
Android中由于ContentProvider导致的“应用组件的命名与已安装应用有冲突”问题
-
Android中包含多个Activity的应用退出按钮实现
-
Android中包含多个Activity的应用退出按钮实现