android 从应用中打开第三方应用

打开第三方应用之前需要先判断该应用是否存在,代码如下:

复制代码
public boolean isAppInstalled(Context context, String packageName) {
        PackageManager packageManager = context.getPackageManager();
        try {
            packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }

如果判断第三方应用存在则可以进行应用打开了,代码如下:

复制代码
 if (isAppInstalled(MainActivity.this, packageName)) {
                Intent intent = new Intent();
                ComponentName comp = new ComponentName("第三方应用包名", "第三方应用第一个activity");
                intent.setComponent(comp);
                intent.setAction("android.intent.action.MAIN");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            } else {
                Toast.makeText(MainActivity.this, "请先安装该应用", Toast.LENGTH_SHORT).show();
            }

但是我使用中发现一个问题,使用判断第三方应是否存在时在Android高版本系统会一直获取不到。后来研究发现需要在AndroidManifest.xml中新增以下权限以及queries

复制代码
 <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
        tools:ignore="QueryAllPackagesPermission" />


<queries>
       <package android:name="第三方应用包名" />
</queries>
复制代码
相关推荐
飞翔的佩奇4 分钟前
Java项目:基于SSM框架实现的忘忧小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
java·数据库·mysql·vue·毕业设计·ssm框架·小区物业管理系统
阿蒙Amon4 分钟前
C#扩展方法全解析:给现有类型插上翅膀的魔法
开发语言·c#
@Ryan Ding14 分钟前
MySQL主从复制与读写分离概述
android·mysql·adb
RainbowSea21 分钟前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端
掘金-我是哪吒22 分钟前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
java·分布式·微服务·云原生·架构
RainbowSea25 分钟前
问题 1:MyBatis-plus-3.5.9 的分页功能修复
java·spring boot·mybatis
尘浮72828 分钟前
60天python训练计划----day59
开发语言·python
前端 贾公子29 分钟前
monorepo + Turborepo --- 开发应用程序
java·前端·javascript
Chef_Chen1 小时前
从0开始学习R语言--Day39--Spearman 秩相关
开发语言·学习·r语言
移动开发者1号1 小时前
Android 同步屏障(SyncBarrier)深度解析与应用实战
android·kotlin