Android应用中如何启动另一个应用

Android中 一个应用启动另外一个应用一般有2种情况,

被启动应用的包名已知 和  未知两种情况:

1  被启动应用的包名已知:

   /**启动另外应用的代码,其中被启动的应用的包名为packageName,
        应用的入口为packageName.MainActivity,
      此方法的2个应用的AndroidManifest.xml文件都不需要修改
     **/
    Intent intent = new Intent();
    intent.setComponent(new ComponentName("packageName","packageName.MainActivity"));
    intent.setAction(Intent.ACTION_VIEW);
    startActivity(intent);

 2  被启动应用的包名未知: 

这种情况虽然是不知道应用的包名,但是最终启动应用还是通过包名启动。所以要通过一种方法获得手机内应用的包名。 
手机内分系统预装应用和非系统自己安装的应用,可以通过下边的方法判断,返回一个包名的List集合:

 public List<PackageInfo> getAllApps() {
        List<PackageInfo> apps = new ArrayList<PackageInfo>();
        PackageManager packageManager = this.getPackageManager();
        //获取手机内所有应用
        List<PackageInfo> paklist = packageManager.getInstalledPackages(0);   

        for (int i = 0; i < paklist.size(); i++) {
            PackageInfo pak = (PackageInfo) paklist.get(i);
            //判断是否为非系统预装的应用  (大于0为系统预装应用,小于等于0为非系统应用)
            if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
                apps.add(pak);
            }
        }
        return apps;
}

  由于这是个包名的List集合:我们仍不能确定我们要启动的应用是哪个,没关系,我们还可以进一步获取应用名。

 public String[] launchApp() {
        PackageManager packageManager = this.getPackageManager();
        List<PackageInfo> packages = getAllApps();
        str3=new String[packages.size()];
        PackageInfo pa = null;
        for(int i=0;i<packages.size();i++){
            pa = packages.get(i);
            //获得应用名。这里的str3是我定义的一个数组,承载应用名。
            str3[i] = packageManager.getApplicationLabel(pa.applicationInfo).toString();   

        }   

		return str3;
    }

  最后可以根据我们要启动的应用名和String[]组数的每一项做判断。若为true,则启动应用,若为fause,则进行下一项判断。

时间: 2024-10-29 14:31:39

Android应用中如何启动另一个应用的相关文章

Android中点击按钮启动另一个Activity以及Activity之间传值

场景 点击第一个Activity中的按钮,启动第二个Activity,关闭第二个Activity,返回到第一个Activity. 在第一个Activity中给第二个Activity传递值,第二个Activity中获取并显示. 打开第二个Activity Activity传值 注: 博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 启动另一个Activity 在第一个Activity中

Android Studio中模拟器启动不成功问题

问题: 使用Android Studio 遇到模拟器启动不成功,直接退出,其中event log报错信息: Emulator: Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) 环境: 64-bit Ubuntu18.04LTS,显卡为N卡 解决: 安装N卡驱动,重启,解决.下面是一种安装N卡驱动的方法: 1. ubuntu-drivers devices检查需要驱动的设备 2. sudo ubuntu

Android开发中adb启动失败adb连接异常的解决办法

  一.情况描述:   我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 adb connect异常 比如会出现下面这样 : [2014-12-18 16:18:26 - ] The connection to adb is down, and a severe error has occured. [2014-12-18 16:18:26 - ] You must restart adb and Eclipse. [2014-12-18 16:18:26 - ]

android 获取设备中已启动的服务并判断某一服务是否启动

我们常常在开发的时候,通过获取系统已启动的服务来判断该服务器是否还需要再启动. 而本文将介绍android设备中已启动的服务,并判断某一服务是启动 1.根据ACTIVITY_SERVICE获取系统服务 activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 2.获取系统中正在运行的服务 runningList = activityManager.getRunningServices(30);//代表我们希望返

MVP模式在Android开发中的应用

一.MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互.同一时候让Model仅仅关系数据的处理.基于MVC概念的MVP(Model-View-Presenter)模式应运而生. 在MVP模式里通常包括4个要素: (1)View:负责绘制UI元素.与用户进行交互(在Android中体现为Activity); (2)View interface:须要View实现的接口,V

Android开发中的问题及相应解决(持续更新)

最近博客写的少了,以后还得经常更新才行. ------------------------------------------------------------ 1.try cath 异常不全导致的意外问题. 之所以将此问题放在第一位,是因为前阵子中项目中出现了此类情况,并且这种情况很容易不注意或遗忘,但其错误却是致命的. 在Java/Android开发中,当调用一个函数时,此函数抛出一个A类型的异常,很自然的,在调用的地方我们会try.. catch此异常,并且绝大多数情况下,捕获异常是由E

Android Studio中Button等控件的Text中字符串默认大写的解决方法

初学Android的时候,在Android Studio中xml里面添加一个Button.EditText等控件后,它的Text总是会显示大写,即使你输入的字符串是小写也不行,控制字符串大小写的属性是android:textAllCaps, 最后查看了一下Themes.xml文件,找到了一些端倪,发现在设置样式的时候,默认是把所有的字符串显示大写true. 如图,是从android的Style.xml中的截图,   [解决办法] 1. 把xml中你不想大写的控件添加一行 android:text

ios 一个app启动另一个app

问题描述:需要从一个ios应用程序中,能启动另一个ios应用程序. 开发环境:xcode7.3.1 关键词:白名单(LSApplicationQueriesSchemes).注册自己的URL Demo源代码链接:http://pan.baidu.com/s/1bo327sb 如何从一个app中,启动另一个app???本人ios菜鸟(工作需要,刚开始自学ios,现学现卖,哈哈)参考网上若干文章,实现了这个功能.目前,将demo分享出来. 1.注册自己的URL 新建一个工程MyAppOne,在inf

MVP模式在Android开发中的最佳实践

这篇文章拖了好久了,一直存在草稿箱里没有继续写,趁今天有空,撸撸完. 回想一下,你刚刚学习Android的时候,总会看到一些书上写着,Android使用的是MVC模式,Activity就是一个Controller,或许那个时候,你没有什么深刻的体会.随着经验的积累.你发现,Activity既是Controller,掌管着许许多多的业务逻辑,同时它也作为View的一部分,控制着视图层的显示.久而久之,这个Controller便显得过于重,职责不再那么单一. 于是,再后来,为了使Activity的职