android开发中apk安装包常用工具
来源:互联网 发布:万能套打软件 编辑:程序博客网 时间:2024/05/17 08:47
开发项目中用到的有关获取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;
}
/**
*根据名名获取版本信息
*/
int versionCode = -1;
PackageInfo pkgInfo = AppUtil.getPkgInfoByName(context, pkgName);
if (pkgInfo != null) {
versionCode = pkgInfo.versionCode;
}
return versionCode;
}
}
0 0
- android开发中apk安装包常用工具
- android中APK包的安装
- android apk 逆向中常用工具一览
- Android APK 安装包
- android开发中常用工具类
- android反编译apk常用工具
- android小游戏:功夫蛇 开发经验总结(附apk安装包)
- Android安装卸载apk包
- android 生成apk安装包
- Android APK安装包瘦身
- Android APK安装包瘦身
- Android APK安装包瘦身
- Android APK安装包瘦身
- Android APK安装包瘦身
- Android APK安装包瘦身
- Android安装卸载apk包
- Android APK安装包瘦身
- Android apk 安装包损坏
- LayoutInflater作用及使用
- 配置cocosPod环境
- 二维码备忘录
- objective-c 关键字和概念
- 测试代码的报错java.lang.Exception: No tests found matching Method ***
- android开发中apk安装包常用工具
- C - 实在找不到中文题目了
- STM32F103学习笔记(六) 独立看门狗and窗口看门狗
- android root权限开放
- Objective-c 数字对象(NSNumber)
- android布局属性详解
- RSS规范
- stm32_ucos学习---Osinit()
- JS学习网