通过Facebook应用程序打开Facebook网站个人资料并不总是有效

时间:2013-10-10 13:13:27

标签: android facebook android-intent user-profile

背景

我正在尝试在Facebook应用程序上打开一个特定的个人资料页面(当然安装了Facebook应用程序时)。

问题

我注意到,如果我作为最终用户,请转到Facebook应用的应用信息屏幕(我可以卸载应用,清除其缓存等...)并选择“强制停止”,然后尝试打开个人资料页面,Facebook应用程序本身要么崩溃,要么甚至没有启动。

如果Facebook应用程序已经运行,代码工作正常。

代码

context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
final String facebookScheme = String.format("fb://profile/%s", socialNetworkUid);
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY
        | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
return intent;
BTW,该计划来自this link

问题

  • 为什么会这样?
  • 我可以以某种方式避免它吗?
  • 这是Facebook应用程序上的错误,或者我没有正确实现它?
  • 我现在真的需要检查FB应用程序是否处于活动状态,然后才允许使用此意图吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

以下代码对我来说没有任何问题,无论Facebook应用程序是否开放。

public void goToFacebook(String id) {

    try {
        getPackageManager().getPackageInfo("com.facebook.katana", 0);
        Intent facebookPage = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/"+id));
        startActivity(facebookPage);
    } catch (Exception e) {
        Intent launchBrowser = new Intent(Intent.ACTION_VIEW, Uri.parse("http://facebook.com/"+id));
        startActivity(launchBrowser);
    }

}

如您所见,我正在使用try / catch来检测FB应用程序是否已安装。如果Facebook应用程序已经启动,它将移动到配置文件,否则它将启动应用程序,然后打开配置文件。

如果未安装Facebook应用程序,我会将用户通过浏览器发送到个人资料页面。

修改

在我的应用程序中多次打开Facebook应用程序后,我设法重现了您在我的测试设备上看到的相同内容。我可以在LogCat中看到以下错误,因此它似乎是Facebook应用程序的错误:

10-10 14:43:01.406: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.facebook.katana/com.facebook.katana.IntentUriHandler}: java.lang.IllegalStateException: FbSharedPreferences used before initialized