分享一个apk管理的工具类
2016-11-17 16:36
381 查看
分享一个apk管理的工具类
package hd.com.xposeddemo.utils; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.net.Uri; import android.widget.Toast; import java.io.File; import java.util.ArrayList; import java.util.List; /** * @author:czg * @date:2016/11/17 * @description:检测apk的安装情况 */ public class ApkUtil { /** * 查询手机内所有支持分享的应用 * @param context * @return */ @SuppressWarnings("WrongConstant") public static List<ResolveInfo> getShareApps(Context context){ List<ResolveInfo> mApps = new ArrayList<ResolveInfo>(); Intent intent=new Intent(Intent.ACTION_SEND,null); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setType("text/plain"); PackageManager pManager = context.getPackageManager(); mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT); return mApps; } /** * 通过PackageManager获取手机已安装apk文件信息 * @param ctx * @return */ public static List<PackageInfo> getInsatlledApk(Context ctx){ PackageManager packageManager = ctx.getPackageManager(); List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0); return packageInfoList; } /** * 安装指定的apk * @param ctx * @param apkFilePath */ public static void installApk(Context ctx, String apkFilePath){ Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(apkFilePath)), "application/vnd.android.package-archive"); ctx.startActivity(intent); } /** * 先检测一下apk是否已安装呢 * @param pak * @return */ static public boolean checkInstall(Context ctx,String pak) { // TODO Auto-generated method stub boolean install=false; PackageManager pm=ctx.getPackageManager(); try { PackageInfo info=pm.getPackageInfo(pak,1); if (info!=null&&info.activities.length>0) { install=true; } } catch (PackageManager.NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return install; } /** *获取程序的版本号 * @param ctx * @param packname * @return */ static public String getAppVersion(Context ctx,String packname){ PackageManager pm=ctx.getPackageManager(); try { PackageInfo packinfo = pm.getPackageInfo(packname, 0); return packinfo.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return null; } /** * 获取程序的名字 * @param ctx * @param packname * @return */ static public String getAppName(Context ctx,String packname){ PackageManager pm=ctx.getPackageManager(); try { ApplicationInfo info = pm.getApplicationInfo(packname, 0); return info.loadLabel(pm).toString(); } catch (PackageManager.NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 获取程序的权限 * @param ctx * @param packname * @return */ static public String[] getAppPremission(Context ctx,String packname){ PackageManager pm=ctx.getPackageManager(); try { PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS); //获取到所有的权限 return packinfo.requestedPermissions; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return null; } /** *获取程序的签名 * @param ctx * @param packname * @return */ static public String getAppSignature(Context ctx,String packname){ PackageManager pm=ctx.getPackageManager(); try { PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES); //获取到所有的权限 return packinfo.signatures[0].toCharsString(); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return null; } /** *获取程序 图标 * @param ctx * @param packname * @return */ static public Drawable getAppIcon(Context ctx,String packname){ PackageManager pm=ctx.getPackageManager(); try { ApplicationInfo info = pm.getApplicationInfo(packname, 0); return info.loadIcon(pm); } catch (PackageManager.NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 打开已经安装好的apk */ public static void startAPP(Context ctx, String appPackageName){ try{ Intent intent = ctx.getPackageManager().getLaunchIntentForPackage(appPackageName); ctx.startActivity(intent); }catch(Exception e) { Toast.makeText(ctx, "没有安装"+appPackageName, Toast.LENGTH_LONG).show(); } } }
相关文章推荐
- 分享一个实用的String的工具类
- 分享一个自己写的wordpress广告位管理插件
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架(第二篇前后端交互数据结构分析)
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
- 分享一个自动编译,打包,签名 android apk 的小脚本
- 【工具类】如何通过代码安装一个apk文件
- 分享一个MySql管理工具SQLyog 8.14的注册码
- Android 分享一个SharedPreferences的工具类,方便保存数据
- 分享一个获取屏幕的宽高的工具类
- 分享一个格式化json的工具类,在日志输入里直接可以很方便的看log了
- 写一个我自己的文件管理工具类
- 5年以前开发一个消费场所会员管理软件的开发经验分享,小项目一般人折腾不起,靠小项目比较难创业成功
- 分享一个word管理编号的方法
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架(第二篇前后端交互数据结构分析)
- 5年以前开发一个消费场所会员管理软件的开发经验分享,小项目一般人折腾不起,靠小项目比较难创业成功
- DOM事件模型是如何的,编写一个EventUtil工具类实现事件管理兼容
- 一个依赖配置属性文件管理的JDBC工具类。
- 一个小公司老板的日常管理[朋友发来的,给大家分享一下]