获取、管理手机中已安装的所有应用信息

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中对已安装应用的管理实现的更多相关文章

  1. 从Android手机中取出已安装的app包,导出apk

    从Android手机中取出已安装的app包,导出apk TAG:Android,提取,apk,adb,pm,root,导出apk 假设有这样一个场景,A君看到你手机上一个实用APP,想要安装到自己手机 ...

  2. ubuntu中查看已安装软件包的方法

    ubuntu中查看已安装软件包的方法: 方法一:在新立得软件包管理器中,打到已安装,便可以看看有多少包被安装. 如果想把这些包的信息复制到一文件里,可用下面的方法. 方法二:在终端输入 sudo dp ...

  3. Android手机出现"已安装了存在签名冲突的同名数据包"的原因及解决办法

    http://blog.csdn.net/dyllove98/article/details/8830264 如果你不是开发者:如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步 ...

  4. 实际操作中遇到的问题--Django中查看已安装的包的相关命令

    pip freeze  --------查看已经安装的包 pip uninstall 安装包名 ---------卸载已安装的包 pip install 安装包名--------安装包

  5. 命令行从Android手机中导出已安装APK的方法调研

    一.背景 二.步骤 一.背景 很多时候,APK文件只存在于应用市场,在PC上无法直接下载.用手机下载下来后就直接安装了,也不能保存原始的APK文件. APK安装到手机后,Android系统会保存一份和 ...

  6. Android 指定调用已安装的某个“相机”App

    在做项目时,有这样一个需求:如果我的手机中安装了四个相机软件,那么,在调用系统相机的时候,这四个相机软件都会被列出来,但是其中的两个在拍照完后并不能将拍得的照片返回给我,因此,能不能指定开启一个我已知 ...

  7. Android中下载、安装和卸载(原)

    应用场景:在检查版本更新的时候经常需要从服务器端下载然后安装到手机中 使用工具: XUtils,这个开源的框架真的是需要花大把时间去阅读和理解的,十分有用的,on the way ! fighting ...

  8. centOS7中Mariadb数据库安装与基本管理

    一.Mariadb数据库安装 1. 直接yum源安装 yum -y install mariadb mariadb-serversystemctl start mariadb /启动Mariadb服务 ...

  9. 我的Android进阶之旅------>Android中adb install 安装错误常见列表

    adb的安装过程分为传输与安装两步. 在出错后,adb会报告错误信息,但是信息可能只是一个代号,需要自己定位分析出错的原因. 下面是从网上找到的几种常见的错误及解决方法: 1.INSTALL_FAIL ...

随机推荐

  1. TensorFlow-谷歌深度学习库 图片处理模块

    Module: tf.image 这篇文章主要介绍TensorFlow处理图片这一块,这个模块和之前说过的文件I/O处理一样也是主要从python导过来的. 通过官方文档,我们了解到这个模块主要有一下 ...

  2. PAT1039: Course List for Student

    1039. Course List for Student (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  3. JDK安装遇见的问题及解决方案

    问题描述: Jdk安装完成后从新启动电脑,打开eclipse报找 不到JRE或JDK,在cmd中输入  java -version 也不显示JDK信息. 后把JDK配置的环境变量path的JAVA_H ...

  4. LoadRunner性能测试工具

    1:LoadRunner是一款性能测试软件,通过模拟真实的用户行为,通过负载.并发和性能实时监控以及完成后的测试报告,分析系统可能存在的瓶颈,LoadRunner最为有效的手段之一应该就是并发的控制. ...

  5. linux模块驱动之led(ioremap)

    一:led内核驱动 (1)在编写led内核驱动时,我们首先要进行内核裁剪,因为友善之臂将LED灯的驱动默认加载到内核中,所以编写模块驱动程序前就要先把原先的LED灯驱动裁剪掉: led驱动在源码里面的 ...

  6. PHP之cookies小练习

    //5-1.php 1 <? error_reporting(E_ALL ^ E_NOTICE); if ($_COOKIE['username']!="") { echo ...

  7. LoadRunner常用方法

    LR常用的函数 lr_start_transaction: 为性能分析标记事务的开始 lr_end_transaction: 为性能分析标记事务的结束 lr_rendezvous: 在 Vuser 脚 ...

  8. Keepalived + nginx实现高可用性和负载均衡

    在前面的一篇中讲到了Heartbeat作为高可用服务架构的解决方案,今天有试验了一种全新的解决方案,即采用Keepalived来实现这个功能. Keepalived 是一种高性能的服务器高可用或热备解 ...

  9. jdk源码阅读笔记-LinkedHashMap

    Map是Java collection framework 中重要的组成部分,特别是HashMap是在我们在日常的开发的过程中使用的最多的一个集合.但是遗憾的是,存放在HashMap中元素都是无序的, ...

  10. STM32学习笔记(一):跑马灯

    本实验所采用的开发板为正点原子的MiniSTM32f103rc开发板,主函数程序如下,注释如下:main.c #include "stm32f10x.h" void Delay(u ...