问题中描述的解决方案将不再起作用(在此问题的编辑中,您可以查看原因的详细信息)。新版本的 facebook 应用程序不再支持这些意图。请参阅此处的错误报告
新的解决方案是使用 iPhone 方案机制(是的,facebook 决定在 Android 中支持 iPhone 机制,而不是 Android 的隐式 Intent 机制)。
因此,要使用用户个人资料打开 facebook 应用程序,您需要做的就是:
String facebookScheme = "fb://profile/" + facebookId;
Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme));
startActivity(facebookIntent);
如果您正在寻找其他操作,您可以使用以下页面获取所有可用操作(但您必须对其进行测试,因为我没有找到关于此的 facebook 官方出版物)
编辑
这部分问题提供了有关问题性质和解决方案的更多详细信息,但以上详细信息足以解决问题。
使用新版本的 facebook 应用程序,清单文件已更改。今天的活动
com.facebook.katana.ProfileTabHostActivity
在清单中以以下方式描述:
<activity android:theme="@style/Theme.Facebook"
android:name="com.facebook.katana.ProfileTabHostActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout"
android:windowSoftInputMode="adjustPan" />
由于此活动不再有意图过滤器,因此android:exported的默认值现在为false。在以前的版本中,有intent-filter,然后默认值为true(欢迎您在这里阅读)我要感谢这个答案关于导出值的详细信息。
但新版本有以下活动:
<activity android:name="com.facebook.katana.IntentUriHandler">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="facebook" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="fb" />
</intent-filter>
</activity>
在这里你可以看到他们支持fb和facebook方案。