现在有这样的一个需求:界面上有一个facebook的连接,当用户点击这个facebook的链接之后,如果手机上安装了facebook的客户端,则打开facebook软件,如果没有安装软件,则打开浏览器访问这个链接,在论坛上提了这个问题,大神给出的答复:
Intent intent; PackageManager packageManager = getPackageManager(); intent = packageManager.getLaunchIntentForPackage("com.facebook.katana"); if (intent==null){ intent = new Intent(); intent.setAction("android.intent.action.VIEW"); // 打开url Uri content_url = Uri.parse("http://facebook.com/"); intent.setData(content_url); startActivity(intent); }else { intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }
还没实验过,不过应该是可行的,已经遇到很多这种问题了,所以关键是知道该应用的包名,还有判断intent是否为空,选择是浏览器还是打开应用。
--------------------------------2015年9月28日11:51:07 更新————————————
已经上机试验过是可行的,因为无法访问facebook,我就用uc浏览器测试了一下,是可行的,代码如下:
Intent intent; PackageManager packageManager = getActivity() .getPackageManager(); intent = packageManager .getLaunchIntentForPackage("com.UCMobile"); if (intent == null) { intent = new Intent(); intent.setAction("android.intent.action.VIEW"); // 打开url Uri content_url = Uri .parse("http://www.uc.cn/topic/android8.4/"); intent.setData(content_url); startActivity(intent); } else { intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }
所以举一反三了,只要知道应用的包名就可以打开该应用,分享一个常见软件的包名和主activity,链接如下: 常见软件包名和主activity
这里提出一个问题,是否可以传递数据给facebook的应用呢?
============================更新日期,2016年1月5日15:46:36===========================
上述回答并没有解决好,当已经安装了facebook的app时,点击该文字跳转到某个人的粉丝专页上,所以就需要使用如下代码进行打开:
// 加载facebook连接,如果没有安装facebookapk则打开浏览器进行打开 public final void launchFacebook() { final String urlFb = "fb://page/<span style="color:#ff0000;">162432683815485</span>"; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(urlFb)); final PackageManager packageManager = getActivity().getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);//过滤查找是否安装了facebook应用 if (list.size() == 0) { final String urlBrowser = "https://www.facebook.com/FEIBMARGINTRADING/"; intent.setData(Uri.parse(urlBrowser)); } startActivity(intent); }
红色的是这个人的facebook的id号,可以在浏览器,通过右键查看源代码,查看他的id号,这样就可以实现由facebook的app的时候,点击则跳转到他的个人专页,如果没有安装facebook的app则跳转到浏览器显示,参考如下的国外连接:
android 跳转到facebook个人专页 还有这个关于intent.aciton_view以及各种软件的rui的连接,感谢这位前辈的连接介绍:android uri action大全