博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 在一个程序中启动另一个程序
阅读量:6555 次
发布时间:2019-06-24

本文共 1609 字,大约阅读时间需要 5 分钟。

Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。
一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);            
ComponentName cn = new ComponentName(packageName, className);            
intent.setComponent(cn);
startActivity(intent);
但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。
下面是实现代码:
private void openApp(String packageName) {
PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);
List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);
ResolveInfo ri = apps.iterator().next();
if (ri != null ) {
String packageName = ri.activityInfo.packageName;
String className = ri.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);
}
}  
 
程序中调用其它程序,代码如下:
 {   
     Intent intent = new Intent(Intent.ACTION_MAIN);  
    ComponentName componentName = new ComponentName("com.lenovo.gemini.OOBE", "com.lenovo.gemini.OOBE.Settings");  
    intent.setComponent(componentName);      
    startActivity(intent);
在代码中"com.lenovo.gemini.OOBE" 是要打开的程序包名," com.lenovo.gemini.OOBE.Settings"是要打开的Activity。
例子:程序中调用浏览器,代码如下:
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://163.com")); 
    startActivity(intent); 
 
转自:

转载于:https://www.cnblogs.com/wubingshenyin/p/3399679.html

你可能感兴趣的文章
Chromium Graphics: 3D上下文及其虚拟化 - Part I
查看>>
linux内核参数-网络优化
查看>>
DataAnnotations - InverseProperty Attribute:
查看>>
cacti安装部署
查看>>
jquery javascript获得网页的高度和宽度
查看>>
2019 -2-15 复习
查看>>
ZeroMQ指南-前言 ...
查看>>
vim锁定屏幕
查看>>
IPv4选项
查看>>
FL2440 ubifs文件系统烧录遇到的问题——内核分区的重要性
查看>>
实用的 JavaScript 调试小技巧
查看>>
使用迭代器
查看>>
stm32模拟iic——引脚配置、代码
查看>>
用JavaScript探测页面上的广告是否被AdBlock屏蔽了的方法
查看>>
027移除元素
查看>>
Linux下清理内存和Cache方法
查看>>
CodeVS 1018 单词接龙(DFS)
查看>>
Android批量图片加载经典系列——Volley框架实现多布局的新闻列表
查看>>
我的博客园的CSS和html设置
查看>>
20145222《信息安全系统设计基础》第二周学习总结
查看>>