これは以前に尋ねられたことを知っていますが、解決策はありません。アプリケーションで初めてFacebook SDKを使用しています。
私が試したこと:
Internetで見つかったほとんどのことを試しましたが、これに関しては何も得られませんでした。
MainActivity.Javaは次のとおりです。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(getApplicationContext());
}
}
My 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());
beforesetContentView(R.layout.activity_main);
as documentation state outを使用する必要があります。完全なFacebookログインの例が必要な場合は、 こちらをチェックしてください 。
Android SDKを統合している間に、 AndroidをReact Native v0.30 +プロジェクト構成 ガイド、およびreact-native run-Android
そして、この画面を得た:
私は、それをもう学びました FacebookSdk.sdkInitialize
は非推奨です。 こちらをご覧ください
いくつかの検索の後、ガイドにアプリのFacebookアプリIDを追加する手順が含まれていないことに気付きました。
開いた 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
ファイルを作成し、値としてアプリIDを含む「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>
タグ。
ドキュメント を確認した後、initialize FacebookSdk Application class onCreate()
Methodを要求していることがわかりました。 。
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を閉じて、react-native run-Androidを使用してプロジェクトを再構築します
次のような初期化コールバックコンストラクターを使用します。
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);