您的位置:首页 > 其它

分享一个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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐