由于 Android 清单中的 Facebook 提供商,应用无法启动

App won't start due to Facebook provider in Android Manifest

我正在使用 Unity 创建 Android 应用程序。第一个使用 Facebook SDK 的应用程序运行良好。现在,当我尝试使用 Facebook SDK 创建另一个 Android 应用程序时,该应用程序甚至无法在 Android 设备上启动。

如果我从 Android 清单中删除此行,应用程序将启动:

   <provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider1705814153052097" android:exported="true" />

但是,在那种情况下,Facebook 分享和邀请将不起作用。

我尝试将 "exported" 更改为 "false",并更改 "authorities",但应用程序也无法启动。 Stack Overflow here 中有一些关于此问题的帖子,但给出的解决方案无法解决我的问题。

这是我的完整 Android 清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" android:installLocation="preferExternal" android:versionCode="28" android:versionName="28">
  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
  <uses-sdk android:minSdkVersion="15" />
  <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true" android:theme="@style/UnityThemeSelector">
    <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
    </activity>
    <activity android:name="com.facebook.unity.FBUnityLoginActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
    <activity android:name="com.facebook.unity.FBUnityDialogsActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
    <activity android:name="com.facebook.unity.FBUnityAppLinkActivity" android:exported="true" />
    <activity android:name="com.facebook.unity.FBUnityDeepLinkingActivity" android:exported="true" />
    <activity android:name="com.facebook.unity.FBUnityGameRequestActivity" />
    <activity android:name="com.facebook.unity.FBUnityCreateGameGroupActivity" />
    <activity android:name="com.facebook.unity.FBUnityJoinGameGroupActivity" />
    <activity android:name="com.facebook.unity.AppInviteDialogActivity" />
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="fb1705814153052097" />
    <provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider1705814153052097" android:exported="true" />
  </application>
</manifest>

我应该如何将 Facebook 功能整合到我的第二个应用程序中?

试试这个:

 <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="1705814153052097" />

而不是

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="fb1705814153052097" />

从元数据标记中的 app_id 中删除 "fb"

和activity声明如下

<activity
            android:name=".Login"
            android:exported="true"
            android:screenOrientation="portrait"
            android:configChanges="orientation|screenSize|keyboardHidden">
            <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="fb1705814153052097" />
            </intent-filter>
        </activity>

您需要添加 activity 意图过滤器 <data android:scheme="fb1705814153052097" />