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 ; } |