使用 Facebook SDK 4.0.1 膨胀 class com.facebook.widget.LoginButton 时出错
Error inflating class com.facebook.widget.LoginButton with Facebook SDK 4.0.1
我知道这是一个很常见的问题,但是我已经通读了所有堆栈溢出问题,但没有找到答案。
我正在尝试使用通过 Gradle 添加的 Facebook SDK 4.0.1 集成 Facebook 登录按钮,但出现以下错误。
java.lang.RuntimeException: Unable to start activity ComponentInfo{se.speedle.android/com.bryderi.speedle.android.activity.MainActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class com.facebook.widget.LoginButton
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class com.facebook.widget.LoginButton
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
at com.bryderi.speedle.android.activity.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.widget.LoginButton" on path: DexPathList[[zip file "/data/app/se.speedle.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/se.speedle.android-1, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.view.LayoutInflater.createView(LayoutInflater.java:559)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
at com.bryderi.speedle.android.activity.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
我可以在 Android Studio 中看到 LoginButton class,所以它可以工作
这是我的 build.gradle 依赖项
dependencies {
aspects 'org.robobinding:robobinding:0.8.9'
compile 'org.springframework.android:spring-android-rest-template:2.0.0.M1'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:support-v13:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.2'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.facebook.android:facebook-android-sdk:4.0.1'
compile 'me.alexrs:recyclerview-renderers:1.0.3'
compile 'com.google.android.gms:play-services:6.5.87'
}
这是我的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="20dp" >
<com.facebook.widget.LoginButton
android:id="@+id/connectWithFbButton"
style="@style/com_facebook_loginview_default_style"
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>
和我的相关部分activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
// Set a Toolbar to replace the ActionBar.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Find our drawer view
dlDrawer = (FragmentNavigationDrawer) findViewById(R.id.drawer_layout);
// Setup drawer view
dlDrawer.setupDrawerConfiguration((ListView) findViewById(R.id.lvDrawer), toolbar,
R.layout.drawer_nav_item, R.id.flContent);
// Add nav items
dlDrawer.addNavItem("Home", "First Fragment", ClassifiedsFragment.class);
dlDrawer.addNavItem("Favourites", "Favourites", ClassifiedsFragment.class);
dlDrawer.addNavItem("My Items", "Items", ClassifiedsFragment.class);
dlDrawer.addNavItem("Settings", "Settings", ClassifiedsFragment.class);
//dlDrawer.addNavItem("Second", "Second Fragment", SecondFragment.class);
//dlDrawer.addNavItem("Third", "Third Fragment", ThirdFragment.class);
// Select default
if (savedInstanceState == null) {
dlDrawer.selectDrawerItem(0);
}
}
在 facebook sdk 4.0.1 中,LoginButton
class 不在 com.facebook.widget
包内。它在 com.facebook.login.widget
包内。所以你的 xml 声明应该是这样的:
<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" />
在 Facebook 文档上,该包已过时。
对于新版本 4 及更高版本,按钮的新包是 com.facebook.login.widget.LoginFacebook.
依赖关系:
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
activity_login.xml:
<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" />
尽情享受吧!
嘿,朋友,你的所有代码都是正确的。按照以下说明操作。
放FacebookSdk.sdkInitialize(getApplicationContext());
在 setContentView() 之前;
并在您的 xml 父布局中放置以下行
xmlns:facebook="http://schemas.android.com/apk/res-auto"
喜欢,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="30dp"
android:layout_marginTop="30dp" />
</RelativeLayout>
Caused by: The SDK has not been initialized, make sure to call
FacebookSdk.sdkInitialize() first.
确保在设置内容视图之前初始化了 facebook SDK。
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
请确保您的 Facebook SDK 在 setContentView 之前已初始化
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
仅在您应用的应用程序中添加此方法class::
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
之前:onCreate 中的 setContentView Activity。
在依赖导入中:
compile 'com.facebook.android:facebook-android-sdk:[4,5)' or smaller
尽情享受吧:)
SDK尚未初始化,请务必先调用FacebookSdk.sdkInitialize()
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(this.getApplicationContext());
setContentView(R.layout.activity_main1);
}
FacebookSdk.sdkInitialize();已弃用。不要再使用它了。
并在此处按照本教程进行操作:
https://developers.facebook.com/docs/facebook-login/android
不使用 com.facebook.login.widget.LoginButton.
尝试使用以下代码使用普通按钮:
/**
* Setup Facebook Login Button
*/
@Override
public void setupFacebookLoginButton() {
Button btnFacebook = mActivityReference.findViewById(R.id.btnFacebook);
Drawable leftDrawable = AppCompatResources.getDrawable(mActivityReference, R.drawable.ic_facebook_icon);
btnFacebook.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, null, null, null);
// Start Facebook integration
LoginManager fbLoginManager = com.facebook.login.LoginManager.getInstance();
mFaceCallbackManager = CallbackManager.Factory.create();
fbLoginManager.registerCallback(mFaceCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
// Your accessToken is here
}
@Override
public void onCancel() {
Log.d("asd", "asd");
}
@Override
public void onError(FacebookException e) {
Log.d("asd", "asd");
}
});
btnFacebook.setOnClickListener(v -> fbLoginManager.logInWithReadPermissions(
mActivityReference,
Arrays.asList("email", "public_profile", "user_birthday")));
}
/**
* Facebook Call Back
*
* @param requestCode request code
* @param resultCode result code
* @param data data
*/
@Override
public void facebookCallBack(int requestCode, int resultCode, Intent data) {
if (mFaceCallbackManager != null) {
mFaceCallbackManager.onActivityResult(requestCode, resultCode, data);
}
}
不要忘记在 android 清单中添加 android 应用程序 ID
应用程序 xml 标签
<application>
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
</application>
我知道这是一个很常见的问题,但是我已经通读了所有堆栈溢出问题,但没有找到答案。
我正在尝试使用通过 Gradle 添加的 Facebook SDK 4.0.1 集成 Facebook 登录按钮,但出现以下错误。
java.lang.RuntimeException: Unable to start activity ComponentInfo{se.speedle.android/com.bryderi.speedle.android.activity.MainActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class com.facebook.widget.LoginButton
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class com.facebook.widget.LoginButton
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
at com.bryderi.speedle.android.activity.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.widget.LoginButton" on path: DexPathList[[zip file "/data/app/se.speedle.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/se.speedle.android-1, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.view.LayoutInflater.createView(LayoutInflater.java:559)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
at com.bryderi.speedle.android.activity.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
我可以在 Android Studio 中看到 LoginButton class,所以它可以工作
这是我的 build.gradle 依赖项
dependencies {
aspects 'org.robobinding:robobinding:0.8.9'
compile 'org.springframework.android:spring-android-rest-template:2.0.0.M1'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:support-v13:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.2'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.facebook.android:facebook-android-sdk:4.0.1'
compile 'me.alexrs:recyclerview-renderers:1.0.3'
compile 'com.google.android.gms:play-services:6.5.87'
}
这是我的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="20dp" >
<com.facebook.widget.LoginButton
android:id="@+id/connectWithFbButton"
style="@style/com_facebook_loginview_default_style"
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>
和我的相关部分activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
// Set a Toolbar to replace the ActionBar.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Find our drawer view
dlDrawer = (FragmentNavigationDrawer) findViewById(R.id.drawer_layout);
// Setup drawer view
dlDrawer.setupDrawerConfiguration((ListView) findViewById(R.id.lvDrawer), toolbar,
R.layout.drawer_nav_item, R.id.flContent);
// Add nav items
dlDrawer.addNavItem("Home", "First Fragment", ClassifiedsFragment.class);
dlDrawer.addNavItem("Favourites", "Favourites", ClassifiedsFragment.class);
dlDrawer.addNavItem("My Items", "Items", ClassifiedsFragment.class);
dlDrawer.addNavItem("Settings", "Settings", ClassifiedsFragment.class);
//dlDrawer.addNavItem("Second", "Second Fragment", SecondFragment.class);
//dlDrawer.addNavItem("Third", "Third Fragment", ThirdFragment.class);
// Select default
if (savedInstanceState == null) {
dlDrawer.selectDrawerItem(0);
}
}
在 facebook sdk 4.0.1 中,LoginButton
class 不在 com.facebook.widget
包内。它在 com.facebook.login.widget
包内。所以你的 xml 声明应该是这样的:
<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" />
在 Facebook 文档上,该包已过时。 对于新版本 4 及更高版本,按钮的新包是 com.facebook.login.widget.LoginFacebook.
依赖关系:
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
activity_login.xml:
<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" />
尽情享受吧!
嘿,朋友,你的所有代码都是正确的。按照以下说明操作。
放FacebookSdk.sdkInitialize(getApplicationContext()); 在 setContentView() 之前;
并在您的 xml 父布局中放置以下行
xmlns:facebook="http://schemas.android.com/apk/res-auto"
喜欢,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="30dp"
android:layout_marginTop="30dp" />
</RelativeLayout>
Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
确保在设置内容视图之前初始化了 facebook SDK。
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
请确保您的 Facebook SDK 在 setContentView 之前已初始化
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
仅在您应用的应用程序中添加此方法class::
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
之前:onCreate 中的 setContentView Activity。
在依赖导入中:
compile 'com.facebook.android:facebook-android-sdk:[4,5)' or smaller
尽情享受吧:)
SDK尚未初始化,请务必先调用FacebookSdk.sdkInitialize()
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(this.getApplicationContext());
setContentView(R.layout.activity_main1);
}
FacebookSdk.sdkInitialize();已弃用。不要再使用它了。
并在此处按照本教程进行操作: https://developers.facebook.com/docs/facebook-login/android 不使用 com.facebook.login.widget.LoginButton.
尝试使用以下代码使用普通按钮:
/**
* Setup Facebook Login Button
*/
@Override
public void setupFacebookLoginButton() {
Button btnFacebook = mActivityReference.findViewById(R.id.btnFacebook);
Drawable leftDrawable = AppCompatResources.getDrawable(mActivityReference, R.drawable.ic_facebook_icon);
btnFacebook.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, null, null, null);
// Start Facebook integration
LoginManager fbLoginManager = com.facebook.login.LoginManager.getInstance();
mFaceCallbackManager = CallbackManager.Factory.create();
fbLoginManager.registerCallback(mFaceCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
// Your accessToken is here
}
@Override
public void onCancel() {
Log.d("asd", "asd");
}
@Override
public void onError(FacebookException e) {
Log.d("asd", "asd");
}
});
btnFacebook.setOnClickListener(v -> fbLoginManager.logInWithReadPermissions(
mActivityReference,
Arrays.asList("email", "public_profile", "user_birthday")));
}
/**
* Facebook Call Back
*
* @param requestCode request code
* @param resultCode result code
* @param data data
*/
@Override
public void facebookCallBack(int requestCode, int resultCode, Intent data) {
if (mFaceCallbackManager != null) {
mFaceCallbackManager.onActivityResult(requestCode, resultCode, data);
}
}
不要忘记在 android 清单中添加 android 应用程序 ID 应用程序 xml 标签
<application>
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
</application>