PackageUtils
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import java.io.File;
public class PackageUtils {
protected static final String TAG = PackageUtils.class.getSimpleName(); /**
* 安装apk应用
*/
public static void installAPK(Context context, File apkFile) {
if (apkFile.isFile()) {
String fileName = apkFile.getName();
String postfix = fileName.substring(fileName.length() - 4, fileName.length());
if (postfix.toLowerCase().equals(".apk")) {
String cmd = "chmod 755 " + apkFile.getAbsolutePath();
try {
Runtime.getRuntime().exec(cmd);
} catch (Exception e) {
Logger.e(TAG, e.getLocalizedMessage());
}
Uri uri = Uri.fromFile(apkFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(uri, "application/vnd.android.package-archive");
context.startActivity(intent);
}
} else if (apkFile.isDirectory()) {
File[] files = apkFile.listFiles();
int fileCount = files.length;
for (int i = 0; i < fileCount; i++) {
installAPK(context, files[i]);
}
}
} /**
* 安装apk应用
*/
public static void installDirApk(Context context, String filePath) {
File file = new File(filePath);
installAPK(context, file);
} /**
* 卸载apk文件
*/
public static void uninstallPackage(Context context, Uri packageUri) {
Intent intent = new Intent(Intent.ACTION_DELETE, packageUri);
context.startActivity(intent);
} /**
* 根据包得到应用信息
*/
public static ApplicationInfo getApplicationInfoByName(Context context, String packageName) {
if (null == packageName || "".equals(packageName)) {
return null;
}
try {
return context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
} catch (NameNotFoundException e) {
Logger.e("EspanceUtils", packageName + " NameNotFoundException");
return null;
}
} /**
* 通过包名获取包信息
*/
public static PackageInfo getPackageInfoByName(Context context, String packageName) {
if (null == packageName || "".equals(packageName)) {
return null;
}
try {
return context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
} catch (NameNotFoundException e) {
Logger.e(TAG, e.getLocalizedMessage());
return null;
}
} /**
* 判断apk包是否安装
*/
public static boolean isApkIntalled(Context context, String packageName) {
if (null == getApplicationInfoByName(context, packageName)) {
return false;
} else {
return true;
}
}
}
PackageUtils的更多相关文章
- java工具类
1.HttpUtilsHttp网络工具类,主要包括httpGet.httpPost以及http参数相关方法,以httpGet为例:static HttpResponse httpGet(HttpReq ...
- Android开发常用工具类
来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前 ...
- Android 进程常驻----开机广播的简单守护以及总结
这是一个轻量级的库,配置几行代码,就可以实现在Android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...
- 53. Android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...
- Android常用的工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils. Prefe ...
- Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工 ...
- Android常用的工具类(转)
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...
- Junit4拓展工具JCategory与Testng的Group功能比较
前言 笔者前段时间分享过一遍文章,关于如何通过引入新注解来扩展Junit4,以解决Process上的问题: JUnit扩展:引入新注解Annotation 最近在跟外面的同事聊的时候,得知Testng ...
- Android android-common 常用功能和工具集合
本文内容 环境 android-common 项目结构 演示 android-common 参考资料 android-common 主要包括如下内容: 缓存,包括图片缓存.预取缓存.网络缓存. 公共 ...
随机推荐
- ngnix反向代理后获取用户真实ip及https配置
server {listen 80;listen 802;server_name test111.xxxx.com 118.24.122.101; gzip on;gzip_min_length 10 ...
- 深度学习_1_Tensorflow_1
# 深度学习 # 图像识别,自然语言处理 # 机器学习 深度学习 # 分类:神经网络(简单) 神经网络(深度) # 回归 图像:卷积神经网络 # 自然语言处理:循环神经网络 # cpu:运行操作系统, ...
- django-bootstrap4|django 加载popper.min.js失败
1.现象 2.解决过程 2.1.右键查看网页源代码 在浏览器地址栏打开popper.min.js对应的URL,发现无法打开,这个地址是国外的,需要找一个可访问的地址替换. 2.2.找到URL在djan ...
- 用window.showModalDialog()打开的页面Request.UrlReferrer为null
今天在解决一个问题,怎么也找不到解决方案.我的一个窗体是IE通过window.showModalDialog()打开的,但为了防止用户手工输的地址,所以我需要判断是通过别的页面调整获得,用Reques ...
- Vmvare 虚拟机固定IP
首先我们打开虚拟机的虚拟网络编辑器,打开vmvare菜单栏的编辑,选择虚拟网络编辑器. 在打开的网络虚拟器中,会看到相关信息,虚拟机网络类型采用的NAT模式,子网地址是192.168.89.0,虚 ...
- Google C++单元测试框架GoogleTest---AdvancedGuide(译文)
上篇在这里: 下篇在这里.
- CentOS7 基于 subversion 配置 SVN server
由于 Window Server 环境下,VisualSVN Server Community 版本只支持 15 个同时在线用户,所以彻底放弃 Windows Server,在 Linux Serve ...
- Python&Selenium 数据驱动【unittest+ddt】
一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt实现数据驱动 二.测试代码 # encoding = utf-8 ""& ...
- 前端自动化构建工具 Webpack——3 webpack配置文件的使用
- win10 出现 No AMD graphics driver is installed or the AMD driver is not functioning properly .....
原因:win10的自动更新的功能没有关闭,更新有时候会出现显卡驱动更新不及时出现的问题. 解决方法一:使用 驱动人生(或者等等....) 进行升级驱动. 解决方法二:手动升级. 1.打开设备管理器 2 ...