中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android開發(fā)中apk安裝包常用工具

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
開發(fā)項目中用到的有關獲取apk信息的工具類,在做版本升級的時候一般都需要用到部分方法,做點筆記:
public class AppUtil {
    /**

     *根據(jù)應用包名(package name)啟動應用 

        *參數(shù)分別是上下文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;
    }

    /**
     * 根據(jù)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;
    }

    /**
     *根據(jù)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;
    }
    /**
     *根據(jù)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;
    }

    /**
     *根據(jù)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);
    }
   /**
     *根據(jù)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;

    }

      /**

        *根據(jù)名名獲取版本信息

       */
    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;
    }
}

標簽:

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇: ImageView加載網(wǎng)絡圖片

下一篇:Android網(wǎng)絡加載圖片并滾動顯示