1. 获取手机里的所有已安装的应用

以前写过一个SoftProviderUtil工具类,拿出来分享一个。通过PackageManager,不仅可以获取PackageName,判断此进程是否为系统应用,安装位置(在内存卡还是SD卡),还可以应用名称以及应用图标。代码如下。其中SoftInfo为自定义的业务类,成员变量即为要获取的信息,加上set/get方法即可。

/*** For Info of InstalledPackages* Created by user on 2016/4/23.*/
public class SoftProviderUtil {public static  List<SoftInfo> getSoftInfo(Context context){PackageManager packageManager = context.getPackageManager();List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);List<SoftInfo> infos = new ArrayList<>();for(PackageInfo info : installedPackages) {SoftInfo info_item = new SoftInfo();String packageName = info.packageName;//应用名字和图标String name = info.applicationInfo.loadLabel(packageManager).toString();Drawable drawable = info.applicationInfo.loadIcon(packageManager);//应用程序信息的标记int flags = info.applicationInfo.flags;if((flags & ApplicationInfo.FLAG_SYSTEM)== 0){//是用户应用info_item.setUserAPP(true);}else {//系统应用info_item.setUserAPP(false);}if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE)== 0){//内存储info_item.setInMemory(true);}else {//外存储info_item.setInMemory(false);}info_item.setName(name);info_item.setPackageName(packageName);info_item.setDrawable(drawable);infos.add(info_item);}return infos;}
}

2. 卸载则是通过

卸载动作则是通过发送指定Action和Data来完成。参数为指定包名。

Intent intent_uninstall = new Intent();
intent_uninstall.setAction("android.intent.action.VIEW");
intent_uninstall.setAction("android.intent.action.DELETE");
intent_uninstall.addCategory("android.intent.category.DEFAULT");
intent_uninstall.setData(Uri.parse("package:" + packageName));
startActivityForResult(intent_uninstall,0);

3. 创建应用图标

卸载操作会相应的删除对应的应用图标以及桌面图标。当然,前提是有桌面图标。一般在应用刚开始被启动时,便会判断是否已经存在了自己应用的图标,如果存在就不用再创建了,否则桌面上会出现两个或者更多图标。如果不存在,便可以使用Intent发送请求,Launcher通过自己注册的InstallShortCutReceiver实现快捷方式图标的生成过程。

public static boolean hasShortCut(Context context) { String url = ""; System.out.println(getSystemVersion()); if(getSystemVersion() < 8){ url = "content://com.android.launcher.settings/favorites?notify=true"; }else{ url = "content://com.android.launcher2.settings/favorites?notify=true"; } ContentResolver resolver = context.getContentResolver(); Cursor cursor = resolver.query(Uri.parse(url), null, "title=?", new String[] {context.getString(R.string.app_name)}, null); if (cursor != null && cursor.moveToFirst()) { cursor.close(); return true; } return false; }
private static int getSystemVersion(){ return android.os.Build.VERSION.SDK_INT; } 
private void installShortCut() {if(hasShortCut)return;Intent intent = new Intent();intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");//三个信息  图标,名字,以及点击逻辑intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"XXXX");intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher));//封装一个intentIntent shortcut = new Intent();shortcut.setAction("android.intent.action.MAIN");shortcut.addCategory("android.intent.category.LAUNCHER");shortcut.setClassName(pckageName,"<packageName>.SplashActivity");intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcut);//发送广播sendBroadcast(intent);edit.putBoolean("shortcut",true);edit.commit();}

Android开发——查询/卸载手机里的应用、应用图标创建相关推荐

  1. Android开发——查询/杀死手机里正在运行的进程

    0. 前言 以前有同学好像做过一个叫"自习君"的App,开启后自动检测用户这一天的自习时间,在学校里宣传广告还打了不少.其实实现原理非常简单,在SQlite数据库(也可以通过文件) ...

  2. android 判断安装微信,Android开发中判断手机是否安装了QQ或者微信

    下面一段代码给大家分享了android中判断手机是否安装了qq或者微信,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧 public static boolean isWeixinAv ...

  3. (转)解决android开发人员,手机app图标显示不正确问题

    (转)解决android开发人员,手机app图标显示不正确问题 参考文章: (1)(转)解决android开发人员,手机app图标显示不正确问题 (2)https://www.cnblogs.com/ ...

  4. android开发 判断当前手机是否是阿里 yunOS 系统

    android开发 判断当前手机是否是阿里 yunOS 系统 调用此方法, 返回ture,就是yunOS系统 返回false,就是非yunOS系统 @SuppressLint({"Defau ...

  5. Android开发实战《手机安全卫士》——5.“高级工具”模块实现 获取经纬度 锁屏 卸载

    文章目录 1.手机防盗--接收短信播放音乐 2.手机防盗--定位方式 3.手机防盗--获取经纬度坐标 4.手机防盗--设备管理器使用 5.手机防盗--锁屏 & 数据清除 & 卸载 6. ...

  6. Android开发实战《手机安全卫士》——3.“手机防盗”模块实现 .9格式图片说明 数据库操作 平移动画

    文章目录 1.手机防盗--密码加密过程 & 加密后的验证 2.手机防盗--对话框展示样式兼容低版本 3.手机防盗--设置界面 & 功能列表界面跳转逻辑处理 4.手机防盗--导航界面的布 ...

  7. 当Android开发遇到魅族手机

    这是我的第一篇博客,对于一个博客小白来说,真不知道写写什么,那么我就在这记录下我在Android开发中遇到的一些奇葩事吧! 直奔主题:不知道大家在Android开发中有没有遇到这种情况,在自己手机中运 ...

  8. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于访问有关设 ...

  9. Android开发:APP桌面只显示默认机器人图标的几个解决方法

    在我们进行Android APP的过程中,对于设置桌面图标应该早就信手拈来了吧,我们只要在AndroidMinifest.xml中的application中设置android:icon="& ...

最新文章

  1. 基于Javaweb实现人力资源管理系统
  2. 思科交换机和路由器的远程配置
  3. Dynamips和Vmware完成CCVP试验(5)
  4. python代码风格_Python编码风格,看这篇就够了
  5. 我看你还能坚持多久?!
  6. drupal ajax 分页,在drupal中使用Ajax时要保持一个404
  7. 云计算---openstack基础构架以及服务方式详解
  8. 《Linux多线程服务端编程:使用muduo C++网络库》书摘6.6.2节
  9. 国科大.模式识别与机器学习.期末复习笔记手稿+复习大纲
  10. 计算机二十四点游戏怎么玩,扑克牌二十四点怎么玩?扑克牌二十四点游戏规则介绍...
  11. leaflet沿线标注_Leaflet for R包(三) 符号标记
  12. 【Excel 教程系列第 5 篇】查找重复值
  13. 跨境erp系统功能分析
  14. 操作系统:动态分区存储(首次适应算法、最佳适应算法)
  15. SMTP 简单邮件传输协议
  16. python pandas dataframe 不显示索引_Python DataFrame 设置输出不显示index(索引)值的方法...
  17. 一般人不会告诉你的跨境电商货源渠道大全
  18. 2023-04-03 Linux中杀死进程kill和killall命令的区别,着重介绍killall
  19. 基于Echarts实现可视化数据大屏水质情况实时监测预警系统
  20. [Step By Step]SAP HANA中创建分析视图(Analytic View)

热门文章

  1. C语言基础知识——判断闰年
  2. linux没有tcpdump命令,大神教你在Linux中使用tcpdump命令
  3. 美图2018届校园招聘编程题(AC)
  4. 名品链THBC缔盟之链
  5. UWA Pipeline 功能详解|如何快速创建UWA服务
  6. 移动开发-使用contentprovider的方法类进行数据获取
  7. sqlserver 2008 r2 下载地址和序列号,可用迅雷下载
  8. 应用层与基础知识(题目完成)
  9. matlab 凸轮程序,求助,关于凸轮的一段matlab程序。
  10. 2022年全国中职组网络安全国赛赛题思路(仅自己一个做题的思路)——网络安全竞赛试题(7)