安卓packageinfo的知识点

news2024/11/7 3:28:03

PackageInfo类包含AndroidManifest.xml文件的信息。

一些常用的属性如下: 

 获得PackageInfo

 //获取指定包名的packageInfo,并且包含所有的内容提供者 
  val pack = context.packageManager.getPackageInfo(
                context.packageName,
                PackageManager.GET_PROVIDERS
            )

//获得手机中安装了的应用的packageInfo,并且包含所有的内容提供者(PackageManager.GET_PROVIDERS)

List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);

想获得什么信息,就填什么flag ,如果想要获得所有的activity

   val pack = context.packageManager.getPackageInfo(
                context.packageName,
                PackageManager.GET_ACTIVITIES
            )

示例:

1.不添加任何flag

 fun getRealPath(context: Context): String? {
        try {
            val pack = context.packageManager.getPackageInfo(
                context.packageName,
                0
            )

获得的PackageInfo的一些信息 

pack = {PackageInfo@9975} "PackageInfo{1956f2d com.example.mytest2}"
 activities = null   //获取的activity为空
 applicationInfo = {ApplicationInfo@9992} "ApplicationInfo{e4e3c62 com.example.mytest2}"
 baseRevisionCode = 0
 compileSdkVersion = 32
 compileSdkVersionCodename = "12"
 configPreferences = null
 coreApp = false
 featureGroups = null
 firstInstallTime = 1686015434025
 gids = null
 installLocation = -1
 instrumentation = null
 isApex = false
 isStub = false
 lastUpdateTime = 1686214196863
 mOverlayIsStatic = false
 overlayCategory = null
 overlayPriority = 0
 overlayTarget = null
 packageName = "com.example.mytest2"
 permissions = null
 providers = null
 receivers = null
 reqFeatures = null
 requestedPermissions = null
 requestedPermissionsFlags = null
 requiredAccountType = null
 requiredForAllUsers = false
 restrictedAccountType = null
 services = null
 sharedUserId = null
 sharedUserLabel = 0
 signatures = null
 signingInfo = null
 splitNames = null
 splitRevisionCodes = null
 targetOverlayableName = null
 versionCode = 0
 versionCodeMajor = 0
 versionName = "1.0"
 shadow$_klass_ = {Class@1937} "class android.content.pm.PackageInfo"
 shadow$_monitor_ = -2120913107

2.添加flags,添加了获得activity的flags

     val pack = context.packageManager.getPackageInfo(
                context.packageName,
                PackageManager.GET_ACTIVITIES
            )

上面不添加flags的获取不到activity,这个可以获取的到

pack = {PackageInfo@9982} "PackageInfo{cd01809 com.example.mytest2}"
 activities = {ActivityInfo[6]@9999} //获取到了activity
 applicationInfo = {ApplicationInfo@10000} "ApplicationInfo{be32a0e com.example.mytest2}"
 baseRevisionCode = 0
 compileSdkVersion = 32
 compileSdkVersionCodename = "12"
 configPreferences = null
 coreApp = false
 featureGroups = null
 firstInstallTime = 1686015434025
 gids = null
 installLocation = -1
 instrumentation = null
 isApex = false
 isStub = false
 lastUpdateTime = 1686214391973
 mOverlayIsStatic = false
 overlayCategory = null
 overlayPriority = 0
 overlayTarget = null
 packageName = "com.example.mytest2"
 permissions = null
 providers = null
 receivers = null
 reqFeatures = null
 requestedPermissions = null
 requestedPermissionsFlags = null
 requiredAccountType = null
 requiredForAllUsers = false
 restrictedAccountType = null
 services = null
 sharedUserId = null
 sharedUserLabel = 0
 signatures = null
 signingInfo = null
 splitNames = null
 splitRevisionCodes = null
 targetOverlayableName = null
 versionCode = 0
 versionCodeMajor = 0
 versionName = "1.0"
 shadow$_klass_ = {Class@1937} "class android.content.pm.PackageInfo"
 shadow$_monitor_ = -1932519415

获取APP信息方式:

ApplicationInfo applicationInfo = packageInfo.applicationInfo;
// APP 包名
String packageName = packageInfo.packageName;
// APP icon
Drawable icon = packageManager.getApplicationIcon(applicationInfo);
// APP 名称
String appName = packageManager.getApplicationLabel(applicationInfo).toString();
// APP 权限
String[] permissions = packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions;

ApplicationInfo类
ApplicationInfo是android.content.pm包下的一个实体类,用于封装应用的信息,flags是其中的一个成员变量public int flags = 0;用于保存应用的标志信息。

ApplicationInfo 可以得到一个应用基本信息。这些信息是从AndroidManifest.xml的< application >标签获取的

ApplicationInfo对象里保存的信息都是<application>标签里的属性值

ApplicationInfo与ResolveInfo比较:前者能够得到Icon、Label、meta-data、description。后者只能得到Icon、Label


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT从入门到精通之 Tensorflow2.x 中如何使用 GPT 模型

Tensorflow2.x 中如何使用 GPT 模型 GPT 模型是自然语言处理&#xff08;NLP&#xff09;领域中一种重要的预训练模型。 TensorFlow2.x 是目前最流行的机器学习和深度学习框架之一&#xff0c;对 GPT 模型的支持度也非常高。在本篇文章中&#xff0c;我们将详细介绍如何使用 T…

前后端交互四、跨域与JSONP

零、文章目录 前后端交互四、跨域与JSONP 1、同源策略和跨域 &#xff08;1&#xff09;同源 如果两个页面URL的协议&#xff0c;域名和端口都相同&#xff0c;则两个页面具有相同的源。 例如&#xff0c;下表给出了相对于 http://www.test.com/index.html 页面的同源检测&…

【iOS_Swift_Alamofire实现网络请求】

文章目录 前言导入库原生网络请求单例封装一个原生网络请求Alamofire用法Alamofire的返回响应将返回的data转为字典/字符串 总结 前言 学习swift继续延续之前的思路&#xff0c;对照着OC学&#xff0c;从UI起手&#xff0c;学习到对应的自适应布局。 今天再次学习了swift的原生…

MySQL分库分表全攻略:从小白到大神的进阶指南!

大家好&#xff0c;我是小米&#xff0c;一个热爱技术的程序员。今天&#xff0c;我来和大家聊一下关于MySQL中的分库分表技术&#xff0c;相信对于开发者和DBA来说是一个非常重要的话题。 什么是分库分表 首先&#xff0c;我们先来了解一下什么是分库分表。分库分表是指将原本…

Apifox(1)比postman更优秀的接口自动化测试平台

Apifox介绍 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台&#xff0c;定位 Postman Swagger Mock JMeter。通过一套系统、一份数据&#xff0c;解决多个系统之间的数据同步问题。只要定义好 API 文档&#xff0c;API 调试、API 数据 Mock、API 自…

scratch躲避陨石 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年5月

目录 scratch躲避陨石 一、题目要求 1、准备工作 2、功能实现 二、案例分析

性能测试计划,怎么写显得你能更专业?

性能测试计划 性能测试是一种非常重要的测试类型&#xff0c;用于确定系统或应用程序在特定负载下的性能指标。以下是一个性能测试计划的建议步骤&#xff1a; 目标 首先&#xff0c;定义性能测试的目标和范围。这包括测试的系统或应用程序以及所需测试的性能指标&#xff0…

基于蒙特卡洛模拟法的电动汽车充电负荷研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

开源项目的流程

开源的好处 增加知名度和使用量&#xff1a;开源项目可以让更多人知道和使用&#xff0c;进而增加项目的知名度和使用量。提高代码质量&#xff1a;开源项目需要接受有可能来自全球的开发者审核和参与&#xff0c;这样可以使得项目代码得到更多高质量的反复审查和改进。快速修…

计算机视觉 | 目标检测与MMDetection

目 录 目标检测的基本范式 滑窗使用卷积实现密集预测锚框多尺度检测与FPN 单阶段&无锚框检测器选讲 RPNYOLO、SSDFocal loss 与 RetinaNetFCOSYOLO系列选讲 一、目标检测的基本范式 1、什么是目标检测 给定一张图片 ——》用矩形框框出所感兴趣的物体同时预测物体类…

前后端交互一、服务器概念与初识Ajax

零、文章目录 前后端交互一、服务器概念与初识Ajax 1、上网的过程 网络相关知识请参考网络详解HTTP相关知识请参考HTTP详解 &#xff08;1&#xff09;客户端与服务器 **上网的目的&#xff1a;**通过互联网获取和消费资源 **服务器&#xff1a;**上网过程中&#xff0c;负…

基于STM32的智能粮仓系统设计

一、项目背景 随着粮食质量要求的提高和储存方式的改变&#xff0c;对于粮仓环境的监测和控制也愈发重要。在过去的传统管理中&#xff0c;通风、防潮等操作需要定期人工进行&#xff0c;精度和效率都较低。而利用嵌入式技术和智能控制算法进行监测和控制&#xff0c;不仅能够…

【Git】git push origin master时发生的各类错误汇总

文章目录 一、常见的git命令二、错误一三、错误二四、错误三五、问题解决 一、常见的git命令 使用 git 命令时&#xff0c;您可以执行一系列操作来管理代码仓库。下面是一些常用的 git 命令及其功能&#xff1a; git init: 在当前目录初始化一个新的 git 仓库。git clone <…

2023年5月青少年机器人技术等级考试理论综合试卷(二级)

青少年机器人技术等级考试理论综合试卷&#xff08;二级&#xff09;2023.6 分数&#xff1a; 100 题数&#xff1a; 45 一、 单选题(共 30 题&#xff0c; 共 60 分) 1.下图中的凸轮机构使用了摆动型从动件的是&#xff1f; &#xff08; &#xff09; A.a B.b C.c D.d 试题类…

我是怎么劝退打算入行软件测试的同学的?

过去千篇一律的机构、文章都在劝大家入行软件测试——门槛低、工资高、加班少&#xff01;而这两年&#xff0c;受国内外形势、经济影响&#xff0c;整个IT行业都在走下坡路&#xff0c;被专家们称作行业回归理性发展。最近机构劝入行测试的帖子少了&#xff0c;而“我是在xxx如…

【Python 继承和多态】零基础也能轻松掌握的学习路线与参考资料

Python 继承和多态是面向对象编程中非常关键的概念。继承是一种创建新类的方法&#xff0c;通过继承一个已有的类来创建新类。而多态则是指不同的对象以不同的方式对同一消息作出响应的能力。在这篇文章中&#xff0c;我们将为您介绍 Python 继承和多态的学习路线&#xff0c;并…

d2l学习_第三章线性回归/欠拟合过拟合/权重衰减

x.1 Linear Regression Theory x.1.1 Model 线性回归的模型如下&#xff1a; 我们给定d个特征值 x 1 , x 2 , . . . , x d x_1, x_2, ..., x_d x1​,x2​,...,xd​&#xff0c;最终产生输出yhat&#xff0c;我们产生的yhat要尽量拟合原来的值y&#xff0c;在这一拟合过程中我…

【MySQL】数据库的增删改查、备份、还原等基本操作

【MySQL】数据库的基本操作 一、创建数据库---create1.1 字符集与校验规则1.1.1 查看系统默认字符集以及校验规则1.1.2 默认方式建立数据库1.1.3 指定编码集建立数据库 1.2 建库的本质 二、查看数据库及其相关属性---show2.1 显示所有数据库2.2 显示数据库的创建语句3.2 显示目…

Yarn【多队列实例、任务优先级设置】

前言 我们知道&#xff0c;Hadoop常见的三种调度器&#xff1a;FIFO调度器&#xff08;几乎不用&#xff0c;因为它是先来先服务&#xff09;、容量调度器&#xff08;Apache Hadoop 默认的调度器&#xff09;、公平调度器&#xff08;CDH默认调度器&#xff09;。 其中&…

PyTorch实战7:咖啡豆识别--手动搭建VGG16

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营-第P7周&#xff1a;咖啡豆识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 目录 一、 前期准备1. 设置GPU2. 导入数据3. 划分数…