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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!