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>
复制代码
相关推荐
chenjingming6662 分钟前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
BoomHe6 分钟前
Android AOSP13 原生 Launcher3 壁纸获取方式
android
殷紫川7 分钟前
深入拆解 Java volatile:从内存屏障到无锁编程的实战指南
java
eddieHoo14 分钟前
查看 Tomcat 的堆内存参数
java·tomcat
cch891814 分钟前
Python主流框架全解析
开发语言·python
那个失眠的夜15 分钟前
Mybatis延迟加载策略
xml·java·数据库·maven·mybatis
十五年专注C++开发23 分钟前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Java成神之路-24 分钟前
SpringMVC 响应实战指南:页面、文本、JSON 返回全流程(Spring系列13)
java·spring·json
殷紫川26 分钟前
深入拆解 synchronized:从偏向锁到重量级锁的升级之旅与优化秘籍
java
Momentary_SixthSense27 分钟前
设计模式之工厂模式
java·开发语言·设计模式