小编给大家分享一下Android如何实现跳转三方应用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
如何跳转三方应用?
这里指的三方应用可以理解为自身外的其余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如何实现跳转三方应用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!