Android 11では、次のqueries
ブロックをプロジェクトのAndroidMainfest.xml
に追加すると、問題を解決できます。
<manifest package="com.example.app"> <queries> <provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> </queries> ... </manifest>
独自のstrings.xml
ファイルに必要なロケールの翻訳を入力することによって、Android用Facebook SDKの文字列を上書きできます。
facebook/res/values/
ディレクトリのstrings.xml
ファイルには、SDKが使用するすべての文字列が含まれます。文字列のリソースの名前には分かりやすい名前を指定します。
詳細については、「Android Developer's Guide (Android開発者ガイド)」の「Localizing with Resources (リソースを使用したローカライズ)」をご覧ください。
通常、AndroidライブラリはBuildConfig.DEBUG
を使用して、アプリがデバッグモードにあるかどうかを判断します。ただし、Gradleのバグにより、Androidライブラリが構築されるときは、DEBUG
が常にfalseに設定されます。回避策として、FacebookSdk.setIsDebugEnabled(boolean)
メソッドがあります。このメソッドにより、アプリから直接デバッグモードを設定できます。これにより、SDKからのデバッグのログ記録が有効になります。
また、FacebookSdk.addLoggingBehavior(LogginBehavior)
を使用してログ記録の動作を設定することによって、さまざまなカテゴリのメッセージのログ記録を有効にできます。詳細については、「Android SDKリファレンス」の「LoggingBehavior」をご覧ください。
利用者のアクションの際には、シェアダイアログによってonSuccess
とonCancel
にコールバックが行われます。
onSuccess
。さらに、利用者がアプリにpublish_actions
アクセス許可を付与すると、Sharer.Result
クラスにpostId
が追加されます。利用者がFacebookログインでログインしていない場合、利用者が[キャンセル]をクリックしたときにも、このメソッドが呼び出されます。
利用者がシェアダイアログの[X]ボタンをクリックした場合はonCancel
。利用者がFacebookログインでログインしており、[キャンセル]をクリックしたときにも呼び出されます。公開のアクセス許可をリクエストすると、次のエラーが表示されることがあります。
このエラーメッセージは、前のリクエストが完了する前にアプリが新しいアクセス許可のリクエストを試みていることを表しています。アクセス許可のリクエストはすべて非同期で行われます。前のリクエストが完了するまでは、新しいアクセス許可をリクエストできません。
複数のステップで新しいアクセス許可を要求する方法については、ScrumptiousやHello FacebookなどのSDKで提供されているサンプルアプリをご覧ください。
ログにエラーがない場合は、リクエストが実行されていない可能性があります。GraphRequest
を実行するには、executeAsync
メソッドを呼び出します。
ネイティブのシェアダイアログにログインしたり、使用するには、アプリの署名に使用するキーをFacebookに設定します。
これは、アプリの署名に使用するキーのSHA-1ハッシュです。通常は、少なくとも2つの異なるキーが使用されます。開発およびデバッグ用のキーと、リリース用のキーです。アプリの設定ページには必ず両方の値が追加されていることを確認してください。
詳細については、「Android SDKスタートガイド」の「開発キーハッシュを作成する」をご覧ください。
ほとんどの場合、AndroidManifest.xml
にContentProvider
が設定されていないことが原因です。AndroidManifest.xml
ファイルにアプリIDとともに追加されていることを確認してください。詳細については、「Androidでのシェア」の「前提条件」をご覧ください。