Android获取所有App信息
示例代码
/**
* 获取所有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信息相关推荐
- Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...
- Android 获取设备各种信息以及其它
做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...
- 【hadoop】java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2
文章目录 1.概述 1.概述 java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2 2022-0 ...
- Android获取歌曲详细信息
Android获取歌曲详细信息 一.目标 二.实现方案 三.HTML方案 四.JSON方案 五.接下来 六.Finally 在<Android实现歌词笔记构思>时,构思了如何在笔记中添加歌 ...
- Android -- 获取设备硬件信息
Android – 获取设备硬件信息 通过 Build 获取指定字段信息: 信息 方法 例子 主板 Build.BOARD PAR 系统定制商 Build.BRAND HUAWEI 硬件名称 Buil ...
- android 获取固件版本号,Android 获取当前APP和系统的版本信息
一.获取APP名字.图标.版本等信息 /** 获取单个App图标 **/ public Drawable getAppIcon(String packageName) throws NameNotFo ...
- 前端获取计算机设备信息,前端获取设备/APP信息
HWH5.getDeviceInfo 获取系统信息:包含设备OS类型.设备版本.设备名称 扫码体验: 请求参数 无. 返回结果参数说明deviceName设备名称 osType设备平台类型,可选值:i ...
- Android获取硬件设备信息
此文介绍一些获取Android手机硬件信息的方法 主要是从Build和TelephonyManager中获取 以及使用反射获取SystemProperties 并使用他的get方法获取一些系统隐藏掉 ...
- android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...
android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...
最新文章
- 成为计算机视觉工程师的第一个月,我都学会了什么?
- gnome mysql client_configure: error: Not found mysqlclient library
- pg数据库与MySQL的count函数_postgresql数据库连接数和状态查询操作
- 约束条件创建定义表(主码,外码的确定和防止空值等)
- matlab教程点语言,编程语言 / Matlab教程_电脑教程学习网( 5 )
- C++学习(一)之Visual Studio安装以及首次使用
- 云原生的本质_CloudNative
- 《统一沟通-微软-实战》-3-部署-Exchange 2010-2-自定义安装
- fit_generator生成的history显示 key_error,并且没有loss 和 val_accuracy
- mysql的知识_mysql基础知识
- SaaS行业乘风杨帆,中小企业市场潜力分析
- python协同过滤电影推荐的论文_Netflix电影推荐系统Python实现(协同过滤+矩阵分解)...
- 改变php默认目录结构,ThinkPHP中自定义目录结构的设置方法_PHP
- DeepLearning | Broad Learning System 宽度学习系统 : 高效增量式浅层神经网络
- Windows设置固定IP
- git报错 fatal: unsafe repository 解决方法 xxx is owned by someone else
- 看了第一句,有人就哭了?
- golang转换时间格式报missing Location in call to Date
- YuKimCai——Linux(centos操作系统)挂盘记录
- 两台计算机是怎么“连接”在一起的