码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Android无法获取已安装应用包名的问题


    前言

    在某些情况下,我们需要获取android上已安装的第三方应用的一些信息

    检索

    private boolean isAppInstalled(Context context, String pkgName) {
            if (pkgName == null || pkgName.isEmpty()) {
                return false;
            }
            PackageInfo packageInfo;
            try {
                packageInfo = context.getPackageManager().getPackageInfo(pkgName, PackageManager.GET_ACTIVITIES);
            } catch (PackageManager.NameNotFoundException e) {
                packageInfo = null;
                e.printStackTrace();
            }
            if (packageInfo != null) {
                return true;
            }
            return false;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    例如:使用如上代码检索,有些情况下也无法获取应用信息,而有些机型又可以获取到应用信息

    原因

    从Android 11 开始 系统对app的可见性进行了保护,只有部分应用可见所有app
    即使您的应用以 Android 11(API 级别 30)或更高版本为目标平台,以下类型的应用也始终对您的应用可见:

    您自己的应用。
    实现 Android 核心功能的某些系统软件包,例如媒体提供程序。
    安装了您应用的应用。
    使用 startActivityForResult() 方法在您的应用中启动 activity 的任何应用,正如如何获取 activity 的结果这一指南中所述。
    启动或绑定到您应用中的某项服务的任何应用。
    访问您应用中的 Content Provider 的任何应用。
    具有 Content Provider 的任何应用,其中您的应用已被授予 URI 权限来访问该 Content Provider。
    接收您应用的输入的任何应用。这种情况仅适用于您的应用作为输入法应用提供输入。
    此外,您可以使用隐式或显式 intent 来启动另一应用的 activity,无论这个应用是否对您的应用可见。

    通过命令 adb shell dumpsys package queries 可以查看系统的具体可见性

    forceQueryable:标签下的apk 表示 可见所有已安装的apk

    queries via package name: 标签表示只有配置了包名 才对该app可见

    queries via intent: 标签表示只有配置了intent 才对该app可见

    只有配置了对应的标签 ,才能获取到对应的app信息

    如果 没有配置标签 还想可见所有app,需配置权限

    解决

    需要在清单文件中配置(标签内)如下包名信息:

    <queries>
            <package android:name="第三方应用包名" />
        </queries>
    
    • 1
    • 2
    • 3
  • 相关阅读:
    渗透测试——1
    Selenium —— Web自动化多浏览器处理!
    MySQL的锁这么多,不知从何学起,看完这篇文章就够了
    Android项目集成穿山甲开屏/插屏/横幅广告教程大全
    如何让IPad Pro变成你的生产力工具?在IPad上用Vscode写代码搞开发
    新鲜出炉!ECCV2022 107个开源数据集合辑,全球 AI 研究热点一网打尽
    C++ 字面量
    反射及在运用过程中出现的IllegalAccessException异常
    solr快速上手:managed-schema标签详解(三)
    API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传
  • 原文地址:https://blog.csdn.net/qq_37254346/article/details/136196086
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号