Android中对已安装应用的管理实现

时间:2023-03-09 01:06:10
Android中对已安装应用的管理实现

获取、管理手机中已安装的所有应用信息

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);
}