我正在尝试在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。
答案 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