android textview 点击打开facebook个人专页,如果没有则跳到浏览器显示

现在有这样的一个需求:界面上有一个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大全


由于实现方式较老,有网友提出上述方式失效,改用如下:

这种方式已失效了;最新解决方法,可以参考:
public static Intent newFacebookIntent(PackageManager pm, String url) {
Uri uri = Uri.parse(url);
try {
ApplicationInfo applicationInfo = pm.getApplicationInfo("com.facebook.katana", 0);
if (applicationInfo.enabled) {
// http://stackoverflow.com/a/24547437/1048340
uri = Uri.parse("fb://facewebmodal/f?href=" + url);
}
} catch (PackageManager.NameNotFoundException ignored) {
}
return new Intent(Intent.ACTION_VIEW, uri);
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值