獲取、管理手機中已安裝的所有應用信息 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; } }View Code
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 ; }View Code
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; }View Code
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); }View Code
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); }View Code