Android開發中apk安裝包常用工具
開發項目中用到的有關獲取apk信息的工具類,在做版本升級的時候一般都需要用到部分方法,做點筆記:
public class AppUtil { /***根據應用包名(package name)啟動應用 *參數分別是上下文context和應用包名:pkgName */ public static boolean startApkByPkgName(Context context, String pkgName) { PackageManager packageManager = context.getPackageManager(); Intent intent = new Intent(); intent = packageManager.getLaunchIntentForPackage(pkgName); if (intent == null) { System.out.println("APP not found!"); return false; } context.startActivity(intent); return true; } /** * 根據apk文件路徑得到app信息 */ public static ApplicationInfo getApkInfoByPath(Context context,String absPath) { ApplicationInfo appInfo = null; PackageManager pm = context.getPackageManager(); PackageInfo pkgInfo = pm.getPackageArchiveInfo(absPath,PackageManager.GET_ACTIVITIES); if (pkgInfo != null) { appInfo = pkgInfo.applicationInfo; /* 必須加這兩句,不然下面icon獲取是default icon而不是應用包的icon */ appInfo.sourceDir = absPath; appInfo.publicSourceDir = absPath; } return appInfo; } /** *根據apk應用包名得到應用信息 */ public static PackageInfo getApkInfoByPkgName(Context context, String pkgName) { PackageInfo pkgInfo = null; PackageManager pm = context.getPackageManager(); try { // 0代表是獲取版本信息 pkgInfo = pm.getPackageInfo(pkgName, 0); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return pkgInfo; } /** *根據apk文件路徑得到應用信息 */ public static PackageInfo getPkgInfoByPath(Context context, String absPath) { PackageInfo pkgInfo = null; PackageManager pm = context.getPackageManager(); pkgInfo = pm.getPackageArchiveInfo(absPath, PackageManager.GET_ACTIVITIES); return pkgInfo; } /** *根據apk路徑直接跳到安裝界面 */ public static void installApkByPath(Context context, String absPath) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://" + absPath), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); }
/* 根據apk包名卸載應用 */ public static void uninstallApk(Context context, String packageName) { String uriString = "package:" + packageName; Uri uninstallUrl = Uri.parse(uriString); Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUrl); context.startActivity(intent); }
public static List<ResolveInfo> queryAppInfo(Context context, String packageName) { PackageManager pm = context.getPackageManager(); // 獲得PackageManager對象 Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); mainIntent.setPackage(packageName); // 通過查詢,獲得所有ResolveInfo對象. List<ResolveInfo> resolveInfos = pm.queryIntentActivities(mainIntent, PackageManager.GET_INTENT_FILTERS); return resolveInfos; } /** *根據名名獲取版本信息 */ public static int getInstalledAppVersionCode(Context context, String pkgName) { int versionCode = -1; PackageInfo pkgInfo = AppUtil.getPkgInfoByName(context, pkgName); if (pkgInfo != null) { versionCode = pkgInfo.versionCode; } return versionCode; }
} </pre>
本文由用戶 f663x 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!