首页 > 代码库 > Android随笔之——Activity中启动另一应用
Android随笔之——Activity中启动另一应用
最近在写语音交互程序,在语音打开应用这块碰到如何用代码控制应用启动的问题。百度了一下,有两种方案:1、获取应用的包名;2、获取应用的包名、入口类名。
之前对两种方案都进行了尝试,发现方案二中存在一个弊端,那就是系统级应用只能获取到包名,不能获取到入口类名,这会导致程序报错,当然你也可以不获取系统级应用的包名和入口类名。出于简单方便的考虑,选择了方案一,废话不多说,上代码。
方案一、
1、获取程序包名:
1 // 获取PackageManager对象 2 PackageManager packageManager = getPackageManager(); 3 // 得到系统安装的所有程序的PackageInfo对象 4 List<PackageInfo> packages = packageManager.getInstalledPackages(0); 5 // 创建String类型的数组,用来存放获取的包名 6 ArrayList<String> packageList = new ArrayList<String>(); 7 8 for (int i = 0; i < packages.size(); i++) { 9 PackageInfo packageInfo = packages.get(i);10 11 // 判断是否是系统级应用12 if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {13 packageList.add(packageInfo.packageName);14 }15 }
2、根据获取的包名启动应用:
1 // 获取PackageManager对象 2 PackageManager packageManager = getPackageManager(); 3 // 获取索引为i的包名 4 String packageName = packageList.get(i); 5 // 如果该程序不可启动(像系统自带的包,有很多是没有入口的)会返回NULL 6 Intent intent = packageManager.getLaunchIntentForPackage(packageName); 7 8 if (intent != null) { 9 startActivity(intent);10 }
方案二、还没仔细研究过,不过对那些主入口设置<intent-filter>的应用,方案二应该会优于方案一,明天找个时间把这个补上
Android随笔之——Activity中启动另一应用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。