判断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
}
posted @   Bigben  阅读(989)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示