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>
复制代码
相关推荐
励志前端小黑哥13 小时前
uv包管理器--python也有自己的pnpm了
开发语言·python·uv
q***016513 小时前
【保姆级教程】apache-tomcat的安装配置教程
java·tomcat·apache
得物技术13 小时前
Golang HTTP请求超时与重试:构建高可靠网络请求|得物技术
java·后端·go
_李小白13 小时前
【Android FrameWork】延伸阅读:ActivityManagerService启动Activity
android
合作小小程序员小小店13 小时前
web网页开发,在线短视频管理系统,基于Idea,html,css,jQuery,java,springboot,mysql。
java·前端·spring boot·mysql·vue·intellij-idea
阿龍178714 小时前
媒体文件问题检测脚本(一)(python+ffmpeg)
开发语言·python
用户416596736935514 小时前
Android 媒体库高效扫描器:基于协程与 `ContentObserver` 的 `FileScanner`
android
Arenaschi14 小时前
Android中的release下面的包有什么左右和debug 的包有什么区别
android
2501_9411118414 小时前
分布式日志系统实现
开发语言·c++·算法
培风图楠14 小时前
Java个人学习笔记
java·笔记·学习