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>
复制代码
相关推荐
tqs_123455 分钟前
redis zset 处理大规模数据分页
java·算法·哈希算法
尚学教辅学习资料13 分钟前
基于Spring Boot的家政服务管理系统+论文示例参考
java·spring boot·后端·java毕设
杨杨杨大侠13 分钟前
Atlas Log 0.2.0 版本
java·github·apache log4j
快乐肚皮13 分钟前
TransmittableThreadLocal:穿透线程边界的上下文传递艺术
java
渣哥14 分钟前
别再无脑 synchronized 了!Java 锁优化的 7 个狠招
java
4Forsee19 分钟前
【Android】View 交互的事件处理机制
android·交互
龙腾-虎跃21 分钟前
Android Sip电话(PJSP)
android
zhangphil39 分钟前
Android点击桌面图库应用启动流程trace分析
android
扯淡的闲人42 分钟前
多语言编码Agent解决方案(2)-后端服务实现
开发语言·python·深度学习
咖啡の猫1 小时前
Android开发-文本输入
android·gitee