获取手机内安装的所有app列表

注意: 获取收集所有app的信息,很耗时,需要在子线程中执行

1、新建两个实体类 BaseBean和ListAppBean

import android.text.TextUtils;
import org.json.JSONObject;
import java.io.Serializable;public class BaseBean implements Serializable {protected JSONObject jsonObject = new JSONObject();protected JSONObject toJSONObject() {return jsonObject;}protected BaseBean() {}protected String isEmpty(String value) {if (TextUtils.isEmpty(value)) {return BaseData.UNKNOWN_PARAM;}return value;}protected String isEmpty(CharSequence value) {if (value == null) {return BaseData.UNKNOWN_PARAM;}return value.toString();}
}
import android.graphics.drawable.Drawable;
import android.util.Log;import com.vdsp.zcadv.base.BaseBean;
import com.vdsp.zcadv.base.BaseData;import org.json.JSONObject;public class ListAppBean extends BaseBean {private static final String TAG = ListAppBean.class.getSimpleName();/*** app名字*/private String appName;/*** 包名*/private String packageName;/*** 包签名*/private String packageSign;/*** 版本号*/private long appVersionCode;/*** 版本名字*/private String appVersionName;/*** 目标系统版本号*/private int targetSdkVersion;/*** 最低系统版本号**/private int minSdkVersion;/*** 描述*/private CharSequence description;/*** 图标*/private Drawable icon;/*** 是否是系统APP*/private boolean isSystem;public String getAppName() {return appName;}public void setAppName(String appName) {this.appName = appName;}public String getPackageName() {return packageName;}public void setPackageName(String packageName) {this.packageName = packageName;}public String getPackageSign() {return packageSign;}public void setPackageSign(String packageSign) {this.packageSign = packageSign;}public long getAppVersionCode() {return appVersionCode;}public void setAppVersionCode(long appVersionCode) {this.appVersionCode = appVersionCode;}public String getAppVersionName() {return appVersionName;}public void setAppVersionName(String appVersionName) {this.appVersionName = appVersionName;}public int getTargetSdkVersion() {return targetSdkVersion;}public void setTargetSdkVersion(int targetSdkVersion) {this.targetSdkVersion = targetSdkVersion;}public int getMinSdkVersion() {return minSdkVersion;}public void setMinSdkVersion(int minSdkVersion) {this.minSdkVersion = minSdkVersion;}public CharSequence getDescription() {return description;}public void setDescription(CharSequence description) {this.description = description;}public Drawable getIcon() {return icon;}public void setIcon(Drawable icon) {this.icon = icon;}public boolean isSystem() {return isSystem;}public void setSystem(boolean system) {isSystem = system;}@Overrideprotected JSONObject toJSONObject() {try {jsonObject.put(BaseData.App.APP_NAME, isEmpty(appName));jsonObject.put(BaseData.App.PACKAGE_NAME, isEmpty(packageName));jsonObject.put(BaseData.App.PACKAGE_SIGN, isEmpty(packageSign));jsonObject.put(BaseData.App.APP_VERSION_CODE, appVersionCode);jsonObject.put(BaseData.App.APP_VERSION_NAME, isEmpty(appVersionName));jsonObject.put(BaseData.App.APP_TARGET_SDK_VERSION, targetSdkVersion);jsonObject.put(BaseData.App.APP_MIN_SDK_VERSION, minSdkVersion);jsonObject.put(BaseData.App.APP_DESCRIPTION, isEmpty(description));jsonObject.put(BaseData.App.APP_ICON, icon);jsonObject.put(BaseData.AppList.IS_SYSTEM, isSystem);} catch (Exception e) {Log.e(TAG, e.toString());}return super.toJSONObject();}
}

2、获取所有APP的方法

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;import com.vdsp.zcadv.utils.PackageSignUtil;import org.json.JSONObject;import java.util.ArrayList;
import java.util.List;class ListAppInfo {private static final String TAG = ListAppInfo.class.getSimpleName();static List<JSONObject> getMobListApp(Context context) {List<JSONObject> appLists = new ArrayList<>();try {PackageManager packageManager = context.getPackageManager();List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);for (PackageInfo packageInfo : packageInfoList) {ListAppBean listAppBean = new ListAppBean();listAppBean.setPackageName(packageInfo.packageName);listAppBean.setAppVersionName(packageInfo.versionName);listAppBean.setAppName(packageInfo.applicationInfo.loadLabel(packageManager).toString());listAppBean.setDescription(packageInfo.applicationInfo.loadDescription(packageManager));listAppBean.setIcon(packageInfo.applicationInfo.loadIcon(packageManager));listAppBean.setTargetSdkVersion(packageInfo.applicationInfo.targetSdkVersion);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {listAppBean.setMinSdkVersion(packageInfo.applicationInfo.minSdkVersion);}if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {listAppBean.setAppVersionCode(packageInfo.getLongVersionCode());} else {listAppBean.setAppVersionCode(packageInfo.versionCode);}listAppBean.setPackageSign(PackageSignUtil.getSign(context, listAppBean.getPackageName()));listAppBean.setSystem(!((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) == 0));appLists.add(listAppBean.toJSONObject());}} catch (Exception e) {Log.e(TAG, e.toString());}return appLists;}
}

UA数据获取

public class UserAgentHelper {public static String getDefaultUserAgent() {String userAgent = null;try {Method localMethod = WebSettings.class.getDeclaredMethod("getDefaultUserAgent", new Class[]{Context.class});if (localMethod != null) {userAgent = (String) localMethod.invoke(WebSettings.class, new Object[]{MobileHardWareHelper.getContext()});}if (userAgent == null) {userAgent = System.getProperty("http.agent");}} catch (Exception localException) {}return TextUtils.isEmpty(userAgent) ? BaseData.UNKNOWN_PARAM : userAgent;}
}

提示:获取速度跟手机安装列表的数量成正比,返回的Json字符串同理!!!!

UserAgent和获取手机内安装的所有app列表相关推荐

  1. android 获取已安装 错误代码,android获取手机已经安装的app信息

    Android获取手机已安装APP(系统/非系统) 效果图 主体代码 private ListView mlistview; private ListpackageInfoList; private ...

  2. 如何给未越狱的ios下载历史版本的app?未越狱IOS系统安装历史版本软件的方法,iPhone未越狱的手机如何安装旧版本APP?

    如何给未越狱的ios下载历史版本的app?未越狱IOS系统安装历史版本软件的方法,iPhone未越狱的手机如何安装旧版本APP? IOS由于系统机制问题不支持版本回退 某些更新可能导致闪退 卡顿等未知 ...

  3. iOS11 获取手机已安装应用列表

    在iOS 11 以前我们可以使用LSApplicationWorkspace来获取手机上已安装的应用列表 iOS 11 上获取所有已安装应用接口被禁,但可以根据BundleId检查App是否存在 - ...

  4. Android中获取手机内所有应用信息

    有时候我们开发中需要获取到手机中安装的所有软件相关信息,比如判断是否安装了某个软件,或者获取某个软件的具体包名等.这里我贴出相关方法. 首先我们要有一个APP的实体类 public class App ...

  5. 如何在一个APP内检测手机内安装了另外一个APP并且跳转到另外一个APP内?

    开发情景:(uniapp) 前段时间,公司开发了一款拼团类型的购物软件,但是,突然被人举报有病毒,涉嫌欺诈(此APP还未上架),升级会报病毒,不升级交易支付时会有金融风险. 挽救措施: 改包名,移动开 ...

  6. Android开发——跳转到应用商店以及app详情页、获取手机硬件信息、验证app是否存在

    普通跳转 Tip:该跳转可适配普通的跳转,比如跳转豌豆荚 //appPkg是你要跳转的包名//marketPkg是你使用的应用商店,如果传空,则会把你手机上的应用商店全部列出来try {if (Tex ...

  7. 检查手机是否安装某一app

    /***context 上下文*packageString 包名*/ public static boolean isAppInstalled(Context context, String pack ...

  8. h5 app 获取手机系统版本号、当前app的版本号

    获取手机系统版本,代码如下: mui.plusReady(function() { var version = plus.os.version; // 获取手机系统版本console.log('当前版 ...

  9. ubuntu20.04开展华为手机adb安装及调试app运行出错闪退的步骤

    ubuntu20.04开展华为手机adb安装及调试步骤 1.切记打开手机开发人员选项,打开方法如下: 设置-----关于手机-----连续点击版本号(要连续点击哦)------返回上一层------系 ...

最新文章

  1. 纠结的名字 - 自动生成apk文件名
  2. 找出口和BADI的ABAP程序
  3. UVA - 11491 Erasing and Winning(奖品的价值)(贪心)
  4. 小米11和华为p40pro哪个好
  5. centOS 7设置静态IP,使用Xshell远程连接
  6. CSDN编程挑战——《进制转换》
  7. Eclipse离线安装Java Decompiler插件
  8. I00009 用1生成回文数
  9. spring mvc 对象型参数的传递(遇到坑了)
  10. 实现挖掘大数据价值的三大因素
  11. 国微高校 html源码,国微CMS模板结构_模板教程_广州国微软件高校站群系统---领先的高校站群系统方案|全媒体方案|学校网站系统...
  12. 网络工程师技能知识图谱,超全超细致,值得收藏
  13. SQL命令讲解(二)
  14. 一文搞懂PMP挣值管理那些让你头疼的公式
  15. 如何理解接口隔离原则?
  16. 深入 javascript 之 call函数 用法
  17. 推荐一个好用的在线pdf压缩工具
  18. ONE DAY |网络安全渗透测试之跨网段攻击
  19. 2020华师c语言程序客观题作业和答案,18秋华师C语言程序设计B在线作业-3辅导资料.docx-资源下载在线文库www.lddoc.cn...
  20. C语言实现数独小游戏

热门文章

  1. 关于OFDM中的FFT和IFFT
  2. 加入域时出现“不能访问网络位置”错误信息
  3. Apache httpd服务器下载及安装
  4. windows配置mysql8.0主从数据库,主从数据同步。
  5. 系统信息:uname,sysinfo,gethostname,sysconf
  6. Nature计算社会科学特刊:如何对21世纪人类社会进行有意义的度量?
  7. 【c++】如何获取int类型最大值以及float类型最大值
  8. c语言-爱心代码的实现
  9. 微信小程序 裁剪图片
  10. 减轻梯度消失方法整理