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>
复制代码
相关推荐
yuanlaile1 分钟前
2026后端趋势:Java 老了?Go 才是未来?
java·后端·golang·go与java·后端学什么
笨笨马甲12 分钟前
Qt 嵌入式开发快速搭建交叉编译环境
开发语言·qt
春日见13 分钟前
Matlab快速入门 基础语法教学
java·开发语言·驱动开发·matlab·docker·计算机外设
张人玉13 分钟前
C# 中的 MVC、MVP、MVVM 模式详解
开发语言·c#·mvc·mvvm·mvp
dgfhf14 分钟前
高性能计算资源调度
开发语言·c++·算法
Lhan.zzZ16 分钟前
Qt绘图探秘:如何避免多QPainter冲突引发的程序崩溃
开发语言·c++·qt
Ralph_Y19 分钟前
C++:迭代器失效
开发语言·c++
smart margin21 分钟前
Python安装教程
开发语言·python
浩瀚之水_csdn23 分钟前
++ Lambda 表达式详解
java·jvm·windows
weixin_3077791329 分钟前
OpenClaw-CN 安全增强方案:从理念到落地的全面剖析
开发语言·人工智能·算法·安全·语言模型