分享到:
点击次数:333  更新时间:2016-10-11 16:24:04  【打印此页】  【关闭
澳门新濠天地娱乐场澳门新濠天地娱乐定制
当前位置:主页 > 新闻动态 > 技术交流 > 判断Android应用是否安装、运行

判断Android应用是否安装、运行

责任编辑:admin 发布时间:2016-11-10 11:11 浏览次数:

本文介绍3个方法,判断手机上是否安装了某应用、该应用是否正在运行、获取手机某个APK文件的安装Intent.启动该Intent就可以直接安装该APK。
    /**
     * 判断应用是否已安装
     * 
     * @param context
     * @param packageName
     * @return
     */ 
    private boolean isInstalled(Context context, String packageName) { 
        boolean hasInstalled = false; 
        PackageManager pm = context.getPackageManager(); 
        List<PackageInfo> list = pm 
                .getInstalledPackages(PackageManager.PERMISSION_GRANTED); 
        for (PackageInfo p : list) { 
            if (packageName != null && packageName.equals(p.packageName)) { 
                hasInstalled = true; 
                break; 
            } 
        } 
        return hasInstalled; 
    } 
    /**
     * 获取文件安装的Intent
     * 
     * @param file
     * @return
     */ 
    private Intent getFileIntent(File file) { 
        Uri uri = Uri.fromFile(file); 
        String type = "application/vnd.android.package-archive"; 
        Intent intent = new Intent("android.intent.action.VIEW"); 
        intent.addCategory("android.intent.category.DEFAULT"); 
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        intent.setDataAndType(uri, type); 
        return intent; 
    } 
/**
 * 判断应用是否正在运行
 * 
 * @param context
 * @param packageName
 * @return
 */ 
private boolean isRunning(Context context, String packageName) { 
    ActivityManager am = (ActivityManager) context 
            .getSystemService(Context.ACTIVITY_SERVICE); 
    List<RunningAppProcessInfo> list = am.getRunningAppProcesses(); 
    for (RunningAppProcessInfo appProcess : list) { 
        String processName = appProcess.processName; 
        if (processName != null && processName.equals(packageName)) { 
            return true; 
        } 
    } 
    return false;