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>
复制代码
相关推荐
for_ever_love__2 分钟前
爬虫项目: 获取高分电影的数据总结
开发语言·python·学习
weixin_307779137 分钟前
C++代码实现MATLAB中的ode23t函数功能
开发语言·c++·算法·matlab
爱划水不秃头的程序员15 分钟前
堆 栈 和常量池的关系是啥 是jvm对他们进行的划分吗
java
周GZ17 分钟前
4个提问,deepseek讲解Java中的线程池
java
LuTshoes17 分钟前
context 上下文工程
java·人工智能·spring·ai
wuminyu18 分钟前
Markword在紧凑对象头上的实现原理剖析
java·linux·c语言·jvm·c++
君顾129 分钟前
24小时自助健身房系统开发实战与完整指南
java·开发语言·健身房
鹿角片ljp38 分钟前
LeetCode 78:子集|回溯、选与不选、递归和path快照
java·数据结构·算法
金玉满堂@bj1 小时前
多环境部署方案(开发、测试、生产,搭配Tomcat\+WAR包)
java·tomcat·maven
syagain_zsx1 小时前
算法基础篇 · 02 高精度(C++ 题解)
开发语言·c++·学习·高精度