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>
复制代码
相关推荐
Savvy..几秒前
包装类详解
java·包装类
我叫张小白。2 分钟前
Vue3 v-model:组件通信的语法糖
开发语言·前端·javascript·vue.js·elementui·前端框架·vue
q***16084 分钟前
解决 IntelliJ IDEA 中 Tomcat 日志乱码问题的详细指南
java·tomcat·intellij-idea
天天摸鱼的java工程师7 分钟前
MySQL 的锁机制和数据隔离:一个 Java 老兵的实战总结
java·后端
城东米粉儿7 分钟前
为ViewGroup 对象的布局更改添加动画效果 笔记
android
AI_56788 分钟前
从“插件装一堆”到“效率翻一倍”——IntelliJ IDEA的插件化开发革命
java·ide·intellij-idea
翻斗花园牛图图-8 分钟前
Qt开发——系统相关3(Qt网络编程)
开发语言·qt
松☆10 分钟前
OpenHarmony + Flutter 多语言与国际化(i18n)深度适配指南:一套代码支持中英俄等 10+ 语种
android·javascript·flutter
_李小白10 分钟前
【Android FrameWork】第十八天:Binder服务
android·microsoft·binder
wasp52011 分钟前
Hudi 元数据管理分析
java·大数据·linux·hudi·数据湖·数据湖仓