加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Android开发中apk安装包常用工具

发布时间:2020-12-14 23:50:24 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 开发项目中用到的有关获取apk信息的工具类,在做版本升级的时候一般都需要用到部分方法,做点笔记: public class AppUtil { /** *根据应用包名(pack

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

开发项目中用到的有关获取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;
    }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读