Android在一个应用程序中启动另一个应用程序
转自如下相关博客:《在android程序中打开另一个应用程序》http://www.cnblogs.com/airry66/p/3966569.html
《android 在一个应用中启动另一个应用》http://hunankeda110.iteye.com/blog/1960444
《Android中通过Intent调用其他应用的方法(转)》http://peirubing.iteye.com/blog/1568145
Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。
一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:
1
2
3
4
5
|
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(); |
PackageManager packageManager = this .getPackageManager(); |
intent = packageManager.getLaunchIntentForPackage(packageName); |
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ; |
this .startActivity(intent); |
但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。
第一步:怎么获得包名?
PackageManager packageManager = context.getPackageManager();
packageManager.getInstalledApplications(0);
这就得到了手机上安装的所有应用的程序信息,当然包括包名,只需要查找自己需要的程序就可以了。
17
18
19
20
21
22
23
|
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); } } |
Android中通过Intent调用其他应用的方法
启动浏览器
代码与范例:
1 2 |
|
说明:启动浏览器并前往http://www.google.com 。
启动拨号程序
代码与范例:
1 2 |
|
说明:启动拨号程序并输入号码138。
通话
代码与范例:
1 2 3 |
|
说明:拨打号码138。需要为程序申请权限<uses-permission android:name=”android.permission.CALL_PHONE”/>。
发送短信
代码与范例:
1 2 3 4 |
|
说明:启动短信程序。
启动通讯录
代码与范例:
1 2 |
|
说明:启动同学录的某一条目。
启动地图程序(Google Maps等)
代码与范例:
1 2 3 |
|
说明:启动地图程序。
搜索路线
代码与范例:
1 2 3 4 5 |
|
说明:启动Google Maps并搜索路线,具体的方法另外补充。
启动邮件程序
代码与范例:
1 2 3 4 5 |
|
说明:启动邮件程序并将收件人设为xxx@example.com,邮件主题设为Hello world,内容设为Ganbarimasu。
启动邮件程序并添加多个收件人
代码与范例:
1 2 3 4 5 6 7 8 9 |
|
说明:启动邮件程序并设置为发送给多个收件人。
启动邮件程序并添加附件
代码与范例:
1 2 3 4 5 |
|
说明:启动邮件程序并添加附件。
播放MP3文件
代码与范例:
1 2 3 4 |
|
说明:启动音乐程序并播放MP3歌曲。
卸载程序
代码与范例:
1 2 3 |
|
说明:卸载包名为strPackageName的程序。
安装程序
代码与范例:
1 2 |
|
说明:安装包名为strPackageName的程序。
启动设置
代码与范例:
1 2 |
|
说明:进入设定程序。
启动电子市场
代码与范例:
1 2 3 |
|
说明:以包名org.breezesoft.techolite为条件启动Android Market。
启动电子市场并进入程序信息界面
代码与范例:
1 2 3 |
|
说明:启动Android Market并进入包名为org.breezesoft.techolite的程序的详细信息界面。
从图库(Gallery)中选择并获取一张图片
代码与范例:
1 2 3 4 |
|
说明:启动图库并中选择并获取一张图片,返回原程序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)