当前位置: 首页 > news >正文

Android 一个APP打开另一个app的两种方式,需添加QUERY_ALL_PACKAGES权限

加<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

方式1:打开外部app,在新窗口打开。
    private void doStartAppPackageName(String packagename) {
        // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
        PackageInfo packageinfo = null;
        try {
            packageinfo = getPackageManager().getPackageInfo(packagename, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        if (packageinfo == null) {
            return;
        }
        Intent resolveIntent = getPackageManager().getLaunchIntentForPackage(packagename);// 包名
        startActivity(resolveIntent);// 启动目标应用

    }

 

方式2:打开外部app,嵌入旧窗口中。 


    private void doStartAppPackageName(String packagename) {
        // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
        PackageInfo packageinfo = null;
        try {
            packageinfo = getPackageManager().getPackageInfo(packagename, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        if (packageinfo == null) {
            return;
        } 
 
        // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
        resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        resolveIntent.setPackage(packageinfo.packageName);

 
        // 通过getPackageManager()的queryIntentActivities方法遍历
List<ResolveInfo> resolveinfoList = getPackageManager()
                .queryIntentActivities(resolveIntent, 0);

 ResolveInfo resolveinfo = resolveinfoList.iterator().next();
        if (resolveinfo != null) {
            String packageName = resolveinfo.activityInfo.packageName;
            String className = resolveinfo.activityInfo.name;


            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);

            ComponentName cn = new ComponentName(packageName, className);
            intent.setComponent(cn);
            startActivity(intent);
        }
    }

http://www.lryc.cn/news/479891.html

相关文章:

  • <数据集>草莓叶片病害识别数据集<目标检测>
  • React 中 `key` 属性的警告及其解决方案
  • OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示
  • 濮良贵《机械设计》第十版课后习题答案全解PDF电子版
  • Python进阶语法探索:列表推导式
  • java合并图片与文字
  • OpenCV快速入门
  • ArcGIS软件之“计算面积几何”地图制作
  • RHCE 第四次作业
  • 【贪心算法】No.1---贪心算法(1)
  • 分布式光伏管理办法
  • 2024最新软件测试面试热点问题
  • 如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
  • 嵌入式硬件电子电路设计(三)电源电路之负电源
  • 数据仓库还是数据集市?这俩怎么选?
  • 计算机图形学 实验二 三维模型读取与控制
  • NAT网络工作原理和NAT类型
  • wget命令之Tomcat(三)
  • IP地址修改器 5.0 重制版
  • vscode编译s32ds工程
  • 大数据专业为什么要学习Hadoop课程
  • Xilinx FPGA的Vivado开发流程
  • 音频模型介绍
  • 《编写沪深两市实时交易数据接收程序全攻略》
  • 一文学会easyexcel导入数据,多sheet页、字典转换【附带源码】
  • Spring中的 InitializingBean、BeanPostProcessor、@PostConstruct 等初始化动作的执行时机分析
  • 如何利用指纹浏览器爬虫绕过Cloudflare的防护?
  • idea 基础简单应用(java)
  • windows环境下vscode下载安装
  • Obsidian之与Typora图片格式相互兼容