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

jopen 10年前

本文介绍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;        }  
</div> </div>
    /**        * 获取文件安装的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;        }  
</div> </div>
/**    * 判断应用是否正在运行    *     * @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;    }  
</div> </div>