示例代码

/**
* 获取所有APP信息,保存到SDcard/download/AppInfo.txt文件中
*/
public static void getAppInfo(Context context) {if (context == null) {return;}ArrayList<String> launchList = getLauncherList(context);Log.d("getAppInfo", Arrays.toString(new ArrayList[]{launchList}));List<ApplicationInfo> packageInfos = context.getPackageManager().getInstalledApplications(0);Log.d("myGetAppInfo", packageInfos.size() + "");String fileName = "AppInfo.txt";Uri external = MediaStore.Downloads.EXTERNAL_CONTENT_URI;//内部存储的Download路径ContentResolver resolver = context.getContentResolver();Uri insertUri;String selection = MediaStore.Files.FileColumns.DISPLAY_NAME + "='" + fileName + "'";Cursor cursor = resolver.query(external, null, selection, null, null);if (cursor != null && cursor.moveToFirst()) {int columnId = cursor.getColumnIndex(MediaStore.Downloads._ID);insertUri = Uri.withAppendedPath(external, "" + cursor.getInt(columnId));} else {ContentValues values = new ContentValues();values.put(MediaStore.Files.FileColumns.DISPLAY_NAME, fileName);values.put(MediaStore.Files.FileColumns.MIME_TYPE, "text/plain");//MediaStore对应类型名values.put(MediaStore.Files.FileColumns.TITLE, fileName);insertUri = resolver.insert(external, values);//使用ContentResolver创建需要操作的文件}PrintWriter out = null;try {out = new PrintWriter(resolver.openOutputStream(insertUri));out.println(ServerThread.getDeviceInfo());for (ApplicationInfo info : packageInfos) {String packageName = info.packageName;CharSequence charSequence = context.getPackageManager().getApplicationLabel(info);String appName = charSequence == null ? "" : charSequence.toString();String path = info.sourceDir;String[] pathSplit = path.split("/");String pathHead = pathSplit[0] + "/" + pathSplit[1] + "/" + pathSplit[2] + "/";boolean canUninstall = false;if (pathHead.startsWith("/data/app")) {canUninstall = true;}boolean isLaunchApp = false;if (launchList.contains(packageName)) {isLaunchApp = true;}PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_CONFIGURATIONS);StringBuilder packageInfoLineBuilder = new StringBuilder();packageInfoLineBuilder.append(appName).append("@");packageInfoLineBuilder.append(packageName).append("@");packageInfoLineBuilder.append(packageInfo.versionName).append("@");packageInfoLineBuilder.append(isLaunchApp).append("@");packageInfoLineBuilder.append(canUninstall).append("@");packageInfoLineBuilder.append(path);if (isLaunchApp) {Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);String launchClass = packageName + "/" + intent.getComponent().getClassName();//Log.d("myGetAppInfo", packageName + "/" + intent.getComponent().getClassName());packageInfoLineBuilder.append("@");packageInfoLineBuilder.append(launchClass);}//Log.d("myGetAppInfo", packageInfoLineBuilder.toString());out.println(packageInfoLineBuilder.toString());}} catch (Throwable e) {e.printStackTrace();} finally {if (out != null) {out.close();}}}

Android11以及以上版本需要在AndroidManifest.xml中添加以下权限,否则有很多APP获取不到:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

Android获取所有App信息相关推荐

  1. Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...

  2. Android 获取设备各种信息以及其它

    做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...

  3. 【hadoop】java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2

    文章目录 1.概述 1.概述 java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2 2022-0 ...

  4. Android获取歌曲详细信息

    Android获取歌曲详细信息 一.目标 二.实现方案 三.HTML方案 四.JSON方案 五.接下来 六.Finally 在<Android实现歌词笔记构思>时,构思了如何在笔记中添加歌 ...

  5. Android -- 获取设备硬件信息

    Android – 获取设备硬件信息 通过 Build 获取指定字段信息: 信息 方法 例子 主板 Build.BOARD PAR 系统定制商 Build.BRAND HUAWEI 硬件名称 Buil ...

  6. android 获取固件版本号,Android 获取当前APP和系统的版本信息

    一.获取APP名字.图标.版本等信息 /** 获取单个App图标 **/ public Drawable getAppIcon(String packageName) throws NameNotFo ...

  7. 前端获取计算机设备信息,前端获取设备/APP信息

    HWH5.getDeviceInfo 获取系统信息:包含设备OS类型.设备版本.设备名称 扫码体验: 请求参数 无. 返回结果参数说明deviceName设备名称 osType设备平台类型,可选值:i ...

  8. Android获取硬件设备信息

    此文介绍一些获取Android手机硬件信息的方法 主要是从Build和TelephonyManager中获取 以及使用反射获取SystemProperties  并使用他的get方法获取一些系统隐藏掉 ...

  9. android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...

    android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...

最新文章

  1. 成为计算机视觉工程师的第一个月,我都学会了什么?
  2. gnome mysql client_configure: error: Not found mysqlclient library
  3. pg数据库与MySQL的count函数_postgresql数据库连接数和状态查询操作
  4. 约束条件创建定义表(主码,外码的确定和防止空值等)
  5. matlab教程点语言,编程语言 / Matlab教程_电脑教程学习网( 5 )
  6. C++学习(一)之Visual Studio安装以及首次使用
  7. 云原生的本质_CloudNative
  8. 《统一沟通-微软-实战》-3-部署-Exchange 2010-2-自定义安装
  9. fit_generator生成的history显示 key_error,并且没有loss 和 val_accuracy
  10. mysql的知识_mysql基础知识
  11. SaaS行业乘风杨帆,中小企业市场潜力分析
  12. python协同过滤电影推荐的论文_Netflix电影推荐系统Python实现(协同过滤+矩阵分解)...
  13. 改变php默认目录结构,ThinkPHP中自定义目录结构的设置方法_PHP
  14. DeepLearning | Broad Learning System 宽度学习系统 : 高效增量式浅层神经网络
  15. Windows设置固定IP
  16. git报错 fatal: unsafe repository 解决方法 xxx is owned by someone else
  17. 看了第一句,有人就哭了?
  18. golang转换时间格式报missing Location in call to Date
  19. YuKimCai——Linux(centos操作系统)挂盘记录
  20. 两台计算机是怎么“连接”在一起的

热门文章

  1. 华为手机忘了密码,怎样强制刷机呢?
  2. 4.3.3 运行心跳任务
  3. 8种基本数据类型的分类
  4. js中的隐式类型转换有哪些
  5. VLC控件支持的参数和方法
  6. pyinstaller打包exe文件的详细步骤及过程中遇到的问题
  7. MySQL索引分析以及相关面试题
  8. 广义表C/C++实现详解
  9. HTML微博浮动代码,jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
  10. 详谈parameterType与resultType的用法