Android中对已安装应用的管理实现
获取、管理手机中已安装的所有应用信息
1、创建应用的实体类AppInfo,属性有应用的名称、包名、图标、第一次安装时间和版本名称
public class AppInfo {
private String name ;//应用名称
private String packageName ;//应用包名
private Drawable icon ;//应用图标
private long firstInstallTime ;//应用第一次安装的时间
private String versionName ;//应用的版本名称
public String getName() {
return name;
}
public String getPackageName() {
return packageName;
}
public Drawable getIcon() {
return icon;
}
public long getFirstInstallTime() {
return firstInstallTime;
}
public String getVersionName() {
return versionName;
}
public AppInfo(String name, String packageName, Drawable icon, long firstInstallTime, String versionName) {
this.name = name;
this.packageName = packageName;
this.icon = icon;
this.firstInstallTime = firstInstallTime;
this.versionName = versionName;
}
}
2、获取所有应用信息的方法
public static List<AppInfo> getAppInfos(Context context){
List<AppInfo> appInfoList = new ArrayList<>() ;
//获取包管理器
PackageManager pm = context.getPackageManager();
//获取已安装的包信息
List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
for(PackageInfo packageInfo : packageInfos){
//获取包名
String packageName = packageInfo.packageName;
//获取应用图标
Drawable icon = packageInfo.applicationInfo.loadIcon(pm);
//获取应用的名称
String name = packageInfo.applicationInfo.loadLabel(pm).toString();
//获取第一次安装的时间
long firstInstallTime = packageInfo.firstInstallTime;
//获取版本号
int versionCode = packageInfo.versionCode;
//获取版本名称
String versionName = packageInfo.versionName;
AppInfo appInfo = new AppInfo(name,packageName,icon,firstInstallTime,versionName);
appInfoList.add(appInfo);
}
return appInfoList ;
}
3、打开应用方法
public static void openApplication(Context context,String packageName) {
Intent intent=isexit(context,packageName);
if(intent==null){
System.out.println("APP not found!....:"+packageName);
}
context.startActivity(intent);
}
/**
* 通过packagename判断应用是否安装
* @param context
*
* @return 跳转的应用主activity Intent
* */
public static Intent isexit(Context context,String pk_name){
//获取包管理器
PackageManager packageManager = context.getPackageManager();
//通过包名获取Intent
Intent it= packageManager.getLaunchIntentForPackage(pk_name);
return it;
}
4、进入应用详情页面
public static void showInstalledAppDetails(Context context, String packageName) {
Intent intent = new Intent();
final int apiLevel = Build.VERSION.SDK_INT;
if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", packageName, null);
intent.setData(uri);
} else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)
// 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。
final String appPkgName = (apiLevel == 8 ? "pkg"
: "com.android.settings.ApplicationPkgName");
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings",
"com.android.settings.InstalledAppDetails");
intent.putExtra(appPkgName, packageName);
}
context.startActivity(intent);
}
5、卸载应用
public static void uninstallApplication(Context context,String packageName){
Intent intent = new Intent() ;
intent.setAction("android.intent.action.DELETE");
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("package:"+packageName));
context.startActivity(intent);
}
Android中对已安装应用的管理实现的更多相关文章
- 从Android手机中取出已安装的app包,导出apk
从Android手机中取出已安装的app包,导出apk TAG:Android,提取,apk,adb,pm,root,导出apk 假设有这样一个场景,A君看到你手机上一个实用APP,想要安装到自己手机 ...
- ubuntu中查看已安装软件包的方法
ubuntu中查看已安装软件包的方法: 方法一:在新立得软件包管理器中,打到已安装,便可以看看有多少包被安装. 如果想把这些包的信息复制到一文件里,可用下面的方法. 方法二:在终端输入 sudo dp ...
- Android手机出现"已安装了存在签名冲突的同名数据包"的原因及解决办法
http://blog.csdn.net/dyllove98/article/details/8830264 如果你不是开发者:如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步 ...
- 实际操作中遇到的问题--Django中查看已安装的包的相关命令
pip freeze --------查看已经安装的包 pip uninstall 安装包名 ---------卸载已安装的包 pip install 安装包名--------安装包
- 命令行从Android手机中导出已安装APK的方法调研
一.背景 二.步骤 一.背景 很多时候,APK文件只存在于应用市场,在PC上无法直接下载.用手机下载下来后就直接安装了,也不能保存原始的APK文件. APK安装到手机后,Android系统会保存一份和 ...
- Android 指定调用已安装的某个“相机”App
在做项目时,有这样一个需求:如果我的手机中安装了四个相机软件,那么,在调用系统相机的时候,这四个相机软件都会被列出来,但是其中的两个在拍照完后并不能将拍得的照片返回给我,因此,能不能指定开启一个我已知 ...
- Android中下载、安装和卸载(原)
应用场景:在检查版本更新的时候经常需要从服务器端下载然后安装到手机中 使用工具: XUtils,这个开源的框架真的是需要花大把时间去阅读和理解的,十分有用的,on the way ! fighting ...
- centOS7中Mariadb数据库安装与基本管理
一.Mariadb数据库安装 1. 直接yum源安装 yum -y install mariadb mariadb-serversystemctl start mariadb /启动Mariadb服务 ...
- 我的Android进阶之旅------>Android中adb install 安装错误常见列表
adb的安装过程分为传输与安装两步. 在出错后,adb会报告错误信息,但是信息可能只是一个代号,需要自己定位分析出错的原因. 下面是从网上找到的几种常见的错误及解决方法: 1.INSTALL_FAIL ...
随机推荐
- tensorflow 1.8, ubuntu 16.04, cuda 9.0, nvidia-390,安装踩坑指南。
被tensorflow 1.8, ubuntu 16.04, cuda 9.0, nvidia-390折磨了5天,终于上坑,留下指南,造福后人. 1.先把依赖搞清楚: tensorflow 1.8依赖 ...
- LogicalDOC office预览中文乱码的问题
近期在试用LogicalDOC,一个文档管理系统. 上传的office文件预览中文乱码 问题原因是LibreOffice缺少对应的中文字体导致,只需要把对应的中文字体拷贝到/opt/libreoffi ...
- 对于Javascript 执行上下文的理解
转载无源头地址 在这篇文章中,将比较深入地阐述下执行上下文 – JavaScript中最基础也是最重要的一个概念.相信读完这篇文章后,你就会明白javascript引擎内部在执行代码以前到底做了些什么 ...
- 十八、Hadoop学记笔记————Hbase架构
Hbase结构图: Client,Zookeeper,Hmaster和HRegionServer相互交互协调,各个组件作用如下: 这几个组件在实际使用过程中操作如下所示: Region定位,先读取zo ...
- linux ubuntukylin和deepin操作系统的比较及改进方向的建议
研发中国的操作系统的需求在我看来是安全,还有就是自主.如果做的好还可以在创新上,使用体验上进行一波超越.现有的所谓的国产操作系统我了解的除了基于安卓的凤凰系统就是基于Linux的像优麒麟和deepin ...
- PHP使用文件排它锁,应对小型并发
总所知周,并发容易造成数据的重复处理,我的一个项目给游戏客户端提供了接口,游戏用户相对较多,如果使用数据库排它锁消耗的资源较高,因而使用了文件的排它锁来应对并发. 思路是打开一个文件并取得文件的独占锁 ...
- open_basedir restriction in effect,解决php引入文件权限问题
一.前言 今天在Ubuntu安装了lnmp环境,运行项目的时候出现了,引入500的错误 二.查看错误 再项目文件入口添加,代码显示错误内容,查看到一下错误 ini_set('display_error ...
- 安装python软件找不到setuptools的解决方案
在新装的centos系统中,用源码安装supervisor提示如下: [root@1e supervisor-3.0]# python setup.py install Traceback (most ...
- java之集合Collection 3个例子
package cn.itcast_01; import java.util.ArrayList; import java.util.Collection; /* * 集合的由来: * 我们学习的是面 ...
- Nginx 入门学习教程
昨天听一个前同事说他们公司老大让他去研究下关于Nginx 方面的知识,我想了下Nginx 在如今的开发技术栈中应该会很大可能会用到,所以写篇博文记录总结下官网学习教程吧. 1. 什么是Nginx? 我 ...