Android11适配已安装应用列表

Android11适配已安装应用列表

之前做过已安装应用列表的适配,最近国内版SDK升级到33和隐私合规遇到很多问题,于是把已安装应用列表记录一下:

1、在Android11及以上的适配:

package com.example.requestinsttallapplistdemoimport android.annotation.SuppressLint
import android.content.Context
import android.content.pm.ApplicationInfo/*** @author:njb* @date: 2023/12/3 20:36* @desc:描述**/
object Utils {/*** 获取手机已安装应用列表* @param context* @return*/@SuppressLint("QueryPermissionsNeeded")fun getAllApps(context: Context): List<String> {val apps: MutableList<String> = ArrayList()val packageManager = context.packageManager// 获取手机内所有应用val packList = packageManager.getInstalledApplications(0)var i = 0val len = packList.sizewhile (i < len) {val pak = packList[i]// if()里的值如果<=0则为自己装的程序,否则为系统工程自带if (pak.flags and ApplicationInfo.FLAG_SYSTEM <= 0) {// 添加自己已经安装的应用程序apps.add(pak.packageName)}i++}return apps}
}

在这里插入图片描述

2、添加获取所有应用列表权限:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.GET_TASKS"/>

3、通过包名查找:

这里以QQ、wx登录等为例:

<queries><package android:name="com.tencent.mobileqq" /><package android:name="com.tencent.tim" /><package android:name="com.tencent.mm"/><package android:name="com.tencent.minihd.qq" /><package android:name="com.tencent.qqlite" />
</queries>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.blowing.demo"<queries><intent><action android:name="android.intent.action.SEND"/><data android:mimeType="image/png"/></intent></queries>
</manifest>

4、简单调用:

package com.example.requestinsttallapplistdemoimport androidx.appcompat.app.AppCompatActivity
import android.os.Bundleclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initData()}private fun initData() {Utils.getAllApps(this)}
}

5、实现效果如下:

在这里插入图片描述

6、demo源码地址如下:

https://gitee.com/jackning_admin/install-applist-demo

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

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

相关文章

RocketMQ领域模型详解

1、主题&#xff08;Topic&#xff09; 1.1、定义​ 主题是 Apache RocketMQ 中消息传输和存储的顶层容器&#xff0c;用于标识同一类业务逻辑的消息。 主题的作用主要如下&#xff1a; 定义数据的分类隔离&#xff1a; 在 Apache RocketMQ 的方案设计中&#xff0c;建议将不同…

【Docker实操】创建一个Nginx服务

一、不使用DockerFile 1、获取nginx官方镜像 docker pull nginx //拉取nginx官方镜像 docker image nginx //查看镜像2、创建项目目录 项目目录&#xff1a;/root/www2/nginx //如果当前目录在root mkdir www2 mkdir www2/nginx cd www2/nginx //进入项目目录3、创建源码文…

KRaft使用SASL_PLAINTEXT进行认证

需要有KRaft相关的基础&#xff0c;才行。可参阅之前学习记录Kafka 一、配置 首先需要了解SASL的含义&#xff0c;SASL全称为Simple Authentication and Security Layer&#xff0c;它主要是用于在客户端和服务器之间提供安全的身份验证机制。 Kafka 支持以下几种 SASL 验证…

MathType公式编辑器安装教程

一、下载 MathType7是一款可以帮助用户快速完成数学公式编辑的应用软件&#xff0c;这款软件适合在进行教育教学、科研机构、论文写作的时候使用。我们可以直接通过这款软件来获取到大量数学上使用到的函数、数学符号等内容&#xff0c;然后使用这些内容来完成公式编辑。 …

Shell循环:expect(一)

一、名词解释&#xff1a; 我们通过Shell可以实现简单的控制流功能&#xff0c;如&#xff1a;循环、判断等。但是对于需要交互的场合则必须通过人工来干预&#xff0c;有时候我们可能会需要实现和交互程序如ssh服务器等进行交互的功能。而Expect就使用来实现这种功能的工具。E…

qt-C++笔记之addItem(), addWidget(), addLayout()

qt-C笔记之addItem(), addWidget(), addLayout() code review! 文章目录 qt-C笔记之addItem(), addWidget(), addLayout()0.《官方文档》相关示例截图1.ChatGPT解释2.《Qt 5.12实战》相关示例截图《Qt 5.12实战》&#xff1a;5.6 组合框 3.addWidget()4.addWidget()和addChil…

矢量图形设计软件CorelDRAW 2023 mac界面说明

CorelDRAW 2023 mac是一款专业的矢量图形设计软件&#xff0c;由Corel公司开发。它提供了广泛的创意工具和功能&#xff0c;旨在满足设计师、艺术家和创意专业人士的需求。 CorelDRAW 2023具有直观的用户界面和工作流程&#xff0c;使用户能够轻松创建各种类型的图形设计&#…

XSS漏洞原理

XSS漏洞介绍&#xff1a; 跨站脚本攻击XSS(Cross Site Scripting)&#xff0c;为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页面时&#xff0c;嵌入We…

基于Java SSM框架+Vue实现企业公寓后勤管理系统项目【项目源码+论文说明】

基于java的SSM框架Vue实现企业宿舍后勤管理网站演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所…

【Linux】进程控制-进程终止

目录 一、进程终止&#xff0c;OS做了什么&#xff1f; 二、进程终止的常见方式 1、代码跑完&#xff0c;结果正确 2、代码跑完&#xff0c;结果不正确 补充 (1)、main函数的返回值的意义是什么&#xff1f; (2)、return 0的含义是什么&#xff1f; (3)、退出码是什么和…

基于OpenCV和改进深度学习网络的香菇分级图像分割系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 近年来&#xff0c;随着计算机视觉和深度学习的快速发展&#xff0c;图像分割技术在各个领域中得到了广泛应用。图像分割是将图像划分为不同的区域或对象的过程&…

Visual Studio 2022+Python3.11实现C++调用python接口

大家好&#xff01;我是编码小哥&#xff0c;欢迎关注&#xff0c;持续分享更多实用的编程经验和开发技巧&#xff0c;共同进步。 查了一些资料&#xff0c;不是报这个错&#xff0c;就是报哪个错&#xff0c;没有找到和我安装的环境的一致的案例&#xff0c;于是将自己的摸索分…

SQL错题集1

1.找出选修课程成绩最差的选课记录 注&#xff1a; 聚合函数只能用在group by和&#xff08;&#xff09;括号中 找最值可用排序order bylimit 1 2. 查询选修成绩 合格的课程 超过2门的 学生编号 3.删除姓名为"LiMing"的学生信息 注&#xff1a; 删除一整行信息&…

CnosDB有主复制演进历程

分布式存储系统的复杂性涉及数据容灾备份、一致性、高并发请求和大容量存储等问题。本文结合CnosDB在分布式环境下的演化历程&#xff0c;分享如何将分布式理论应用于实际生产&#xff0c;以及不同实现方式的优缺点和应用场景。 分布式系统架构模式 分布式存储系统下按照数据复…

java消息中间件简介

一、为什么要使用消息中间件 消息中间件就是可以省去繁琐的步骤&#xff0c;直达目的&#xff0c;怎么讲呢&#xff0c;就是比如你想很多人&#xff0c;知道你的动态&#xff0c;而知道的人可能手机没电&#xff0c;可能手机信号不好&#xff0c;可能手机不在服务区&#xff0c…

智能优化算法应用:基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Maven的安装与配置本地仓库,镜像源,环境变量详细步骤

参考视频&#xff1a; 黑马程序员2023新版JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程 【小飞非系列】最新Maven实战教程-项目实战构建利器 文章目录 一.下载Maven安装包二.配置Maven的本地仓库(本机仓库)三.配置镜像源&#xff08;加速jar包的下载)四.配置Maven的环…

Zookeeper 安装与部署

Zookeeper官网 目录 1 配置文件参数解读2 Zookeeper 单点安装3 Zookeeper 分布式安装 1 配置文件参数解读 Zookeeper 中的配置文件 zoo.cfg 中参数含义解读如下&#xff1a; &#xff08;1&#xff09;tickTime 2000&#xff1a;通信心跳数&#xff0c;Zookeeper 服务器与客户…

IdleStateHandler 心跳机制源码详解

优质博文&#xff1a;IT-BLOG-CN 一、心跳机制 Netty支持心跳机制&#xff0c;可以检测远程服务端是否存活或者活跃。心跳是在TCP长连接中&#xff0c;客户端和服务端定时向对方发送数据包通知对方自己还在线&#xff0c;保证连接的有效性的一种机制。在服务器和客户端之间一…

bean依赖属性配置

bean依赖属性配置 文章目录 bean依赖属性配置 Data ConfigurationProperties(prefix "cartoon") public class CartoonProperties {private Cat cat;private Mouse mouse; }cartoon:cat:name: whatage: 5mouse:name: howage: 6这样的话&#xff0c;业务bean无需在读…