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>
复制代码
相关推荐
泡泡鱼(敲代码中)2 分钟前
C++-string学习笔记
c语言·开发语言·c++·笔记·学习·visualstudio
编程大师哥3 分钟前
JAVA 动态代理
java·开发语言
圣光SG5 分钟前
Java类与对象及面向对象基础核心详细笔记
java·前端·数据库
ytttr87311 分钟前
C# 读取数据库表结构工具设计与实现
开发语言·数据库·c#
白露与泡影11 分钟前
从 BIO 到 epoll:高并发 I/O 模型演进与本质分析
java·服务器·数据库
学编程就要猛12 分钟前
JavaEE进阶:Spring Boot快速上手
java·spring boot·java-ee
Jinuss13 分钟前
源码分析之React中的useImperativeHandle
开发语言·前端·javascript
陆业聪16 分钟前
SystemUI 里做 Launcher App 列表:四种方案的 Framework 原理与工程取舍
android·framework·systemui·launcher
csdn2015_22 分钟前
HashSet 和 LinkedHashSet 区别
java·开发语言