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>
复制代码
相关推荐
lhbian7 小时前
AI编程革命:Codex让脚本开发提速10倍
开发语言·汇编·jvm·c#
jiayong238 小时前
第 36 课:任务详情抽屉快捷改状态
开发语言·前端·javascript·vue.js·学习
低客的黑调8 小时前
MyBatis-Plus-从 CRUD 到高级特性
java·servlet·tomcat
众少成多积小致巨8 小时前
Soong构建入门
android·go·编译器
FFF_634560238 小时前
通用 vue 页面 js 下载任何文件的方法
开发语言·前端·javascript
笔夏8 小时前
【安卓学习之混淆】记录一些混淆导致闪退
android·学习
阿奇__8 小时前
uniapp支付宝 H5 开发踩坑,hash模式下取参要规范!
开发语言·uni-app
阿巴斯甜8 小时前
Kotlin高阶函数和Java 8 lambda的区别:
android
eggwyw8 小时前
PHP搭建开发环境(Windows系统)
开发语言·windows·php
就像风一样抓不住8 小时前
Java 手机号校验工具类
java