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

本文共 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

你可能感兴趣的文章
【ocp-12c】最新Oracle OCP-071考试题库(38题)
查看>>
我为公司做的总体架构,欢迎提建议
查看>>
Apache的prefork模式和worker模式(转)
查看>>
android用于打开各种文件的intent
查看>>
PHP截取字符串
查看>>
php基础:变量,运算符总结
查看>>
函数和对象方法的区别
查看>>
程序猿装逼从注释开始
查看>>
寄存器AX
查看>>
javascript之复习(css属性值的计算)
查看>>
dijkstra算法与优先队列
查看>>
Spring Data JPA
查看>>
LeetCode - Count Primes
查看>>
Zabbix和MPM监控MySQL
查看>>
求三角形的周长类的取值范围
查看>>
easyUI的简单之处
查看>>
蓝牙协议学习---BLE地址类型
查看>>
TP-LINK WR941N路由器研究
查看>>
洛谷P2824 [HEOI2016/TJOI2016]排序(线段树)
查看>>
JS隔行变色
查看>>