Ответ 1
Вы должны использовать FacebookSdk.sdkInitialize(getApplicationContext());
до setContentView(R.layout.activity_main);
, как указано в документации. Если вам нужен полный пример входа в Facebook, проверьте его здесь.
Эй, я знаю, что это было задано раньше, но ни одно из решений, похоже, не помогает. Я использую первый SDK Facebook в своем приложении.
Что я пробовал:
Я пробовал большинство вещей, найденных в Интернет, но ничего не понял.
Вот мой MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(getApplicationContext());
}
}
Вот мой Activitymain.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.facebook.login.widget.LoginButton
android:id="@+id/connectWithFbButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_horizontal"
android:text=" connect_with_facebook" />
</LinearLayout>
см. мой Logcat:
05-13 16:30:39.332: E/AndroidRuntime(10264): Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
Вы должны использовать FacebookSdk.sdkInitialize(getApplicationContext());
до setContentView(R.layout.activity_main);
, как указано в документации. Если вам нужен полный пример входа в Facebook, проверьте его здесь.
Интегрируя Android SDK для собственного проекта, я закончил Android с React Native v0. 30+ Руководство по настройке проекта, запустил react-native run-android
и затем получил этот экран:
Я узнал, что FacebookSdk.sdkInitialize
устарела. смотрите здесь
После некоторых поисков я понял, что руководство не содержит шагов для добавления идентификатора приложения Facebook для моего приложения.
Откройте файл android/app/src/main/AndroidManifest.xml
и посмотрите в тег <application>
, чтобы убедиться, что этот тег meta-data
существует:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
Откройте файл android/app/src/main/res/values/strings.xml
и подтвердите наличие строкового тега "facebook_app_id" с идентификатором приложения в качестве значения:
<string name="facebook_app_id">YOUR_APP_ID_HERE</string>
Запустите react-native run-android
.
Это шаги, которые помогли мне.
Вам больше не нужно использовать FacebookSdk.sdkInitialize. Проверьте, есть ли у вас:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
находится внутри тега <application>
.
После проверки документации я обнаружил, что они просят инициализировать FacebookSdk в классе Application onCreate()
Method.
Snap-код из Facebook doc:
public class MyApplication extends Application {
// Updated your class body:
@Override
public void onCreate() {
super.onCreate();
// Initialize the SDK before executing any other operations,
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
}
}
Есть причина, по которой sdkInitialize()
устарела.
Перейдите к файлу манифеста в папке Android и добавьте следующие
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
После этого добавьте в свой файл strings.xml
(res/values /strings.xml) строковую запись:
<string name="facebook_app_id">APP_ID</string>
Закройте Metro Builder и перестройте свой проект, используя реактивный run-android
Используйте Initialize Callback Constructor следующим образом:
Handler mHandler = new Handler();
FacebookSdk.InitializeCallback initializeCallback = new FacebookSdk.InitializeCallback() {
@Override
public void onInitialized() {
mHandler.post(new Runnable() {
@Override
public void run() {
//UI Code Here
}
});
}
};
//before setContentView()
FacebookSdk.sdkInitialize(getActivity().getApplicationContext(),initializeCallback);
Выполните только 2 шага и ваш Facebook Sdk работает в React Native
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<string name="facebook_app_id">YOUR_APP_ID_HERE</string>
Не надо, потому что сейчас он устарел
FacebookSdk.sdkInitialize(getApplicationContext());