Android跳转三方应用实例代码
前言
老了,老了,那天有位小同事问我Android跳转三方应用时有什么要注意的?是否可以直接跳?如何传递参数过去? 嗯… 我竟然说需要root或者三方授权,尴尬了…
Android四大组件都支持IPC通信,而Activity IPC通信主要体现在通过Intent启动各种系统功能,应用等;其实在此之前已经有很多优秀的blog进行了总结,不过各有不同,我仅以我的方式记录一下 …
如何跳转三方应用?跳转三方应用跳转三方应用 + 指定页面(Activity) 如何获取手机上已有的app包名与启动页(Activity)?获取手机中安装的app包名、启动Activity获取手机app列表兴趣分析 如何在项目中进行实战演练?
如何跳转三方应用?
这里指的三方应用可以理解为自身外的其余app,例如QQ、微信、支付宝、淘宝等app ~
主要通过 Activity Intent + PackageManager
启动三方App,主要在于getLaunchIntentForPackage方法
,如果理解通过Launch启动App的话,秒懂 ~
跳转三方应用
核心代码
PackageManager packageManager = this.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage("项目包名");
startActivity(intent);
封装方法
public void skipOtherApp(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(packageName);
startActivity(intent);
}
跳转三方应用 + 指定页面(Activity)
跳转三方应用的具体界面与上方方式稍有不同,主要通过ComponentName类来帮助打开另一个应用的Activity或者Service
等,具体通过Intent.setComponent方法实现。
核心代码
Intent intent = new Intent();
//这里跳转的是淘宝的启动页
ComponentName comp = new ComponentName("com.taobao.taobao", "com.taobao.tao.welcome.Welcome");
intent.setComponent(comp);
//为三方的activity新开任务栈
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
方法封装
public void skipOtherAppActivity(String packageName, String activityClass) {
Intent intent = new Intent();
//ComponentName类主要是用来帮助打开另一个应用的Activity或者Service等,通过Intent.setComponent方法实现
ComponentName comp = new ComponentName(packageName, activityClass);
intent.setComponent(comp);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
如何获取手机上已有的app包名与启动页(Activity)?
获取手机中安装的app包名、启动Activity
public void getAllApp(Context context) {
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> appsInfo = packageManager.queryIntentActivities(intent, 0);
Collections.sort(appsInfo, new ResolveInfo.DisplayNameComparator(packageManager));
for (ResolveInfo info : appsInfo) {
String pkg = info.activityInfo.packageName;
String cls = info.activityInfo.name;
Log.e("app_info", "pkg:" + pkg + " —— cls:" + cls);
}
}
查询效果
获取手机app列表
方法封装(或许有点画蛇添足了,就当做下次copy元素吧)
public List<ResolveInfo> getAllAppList(Context context) {
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> appsInfo = packageManager.queryIntentActivities(intent, 0);
Collections.sort(appsInfo, new ResolveInfo.DisplayNameComparator(packageManager));
return appsInfo;
}
兴趣分析
看图说话可以分析出,主要是通过PackageManager
以Category
为条件,过滤出android.intent.category.LAUNCHER
的 app
看看ResolveInfo
看看ActivityInfo(我没去找线上源码,本地也没下载… 所以看不全)
关于每个app的基本信息,一般都在ActivityInfo中,有兴趣的可以去源码文档看一下 ~
总结
到此这篇关于Android跳转三方应用实例代码的文章就介绍到这了,更多相关Android跳转三方应用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341