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

http://www.open-open.com/lib/view/open1409191580182.html

 

本文介绍3个方法,判断手机上是否安装了某应用、该应用是否正在运行、获取手机某个APK文件的安装Intent.启动该Intent就可以直接安装该APK。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * 判断应用是否已安装
 
 * @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; 
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
 * 获取文件安装的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; 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * 判断应用是否正在运行
 
 * @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
}
原文地址:https://www.cnblogs.com/bigben0123/p/4267045.html