使用Facebook登录按钮

时间:2015-11-17 16:26:19

标签: android facebook-login

我希望在我的Android应用程序中实现facebook登录,但是当onCreate设置布局时,我的应用程序崩溃。

MainActivity.java

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.facebook.CallbackManager;
import com.facebook.FacebookSdk;
import com.facebook.login.widget.LoginButton;

public class MainActivity extends AppCompatActivity {

    private LoginButton facebookLoginButton;
    private CallbackManager callbackManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    System.out.println("Prova 1");
    try {
        setContentView(R.layout.activity_main);
    }catch(Exception exc){
        System.out.println("Errore activity "+exc);
    }
    System.out.println("Prova 2");

    FacebookSdk.sdkInitialize(this.getApplicationContext());
    System.out.println("Prova 3");  

    }

}

模块:app build.gradle

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'

    compile 'com.facebook.android:facebook-android-sdk:4.7.0'
}

activity_main.xml中

<com.facebook.login.widget.LoginButton
        xmlns:fb="http://schemas.android.com/apk/res-auto"
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="30dp" />

系统只打印“Prova 1”,我不知道为什么!

这是清单

<uses-permission android:name="android.permission.INTERNET"/>
    <activity
                android:name="com.facebook.FacebookActivity"
                android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
                android:label="@string/app_name"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />

元数据

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

我的手机有api 19,但应用程序使用15到23 api。我也在其他应用程序中复制此代码,在线login-basic找不到崩溃。

我的错误是什么?有一天我测试了这个,但没有,请帮助我! 谢谢!!

----------------------------------------------- ---更新-----------------

对不起,我已经为互联网设置了权限。问题是主要构建setContentView(R.layout.activity_main);时我不知道为什么。在activity_main中只有facebook按钮。此外,我在一个新项目中尝试这个代码,这就是为什么我把所有东西放在主要的。

catch错误是:I / System.out:Errore android.view.InflateException:二进制XML文件行#14:错误膨胀类com.facebook.login.widget.LoginButton

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,解决方法是在调用setContentView函数之前初始化facebooksdk。

start_date

当您使用facebook LoginButton这是一个视图时,必须在加载UI内容之前进行初始化。

答案 1 :(得分:0)

首先,我相信你需要一个互联网连接才能访问Facebook。但是,在您的清单文件中,您尚未添加互联网权限,因此请按以下步骤操作

<uses-permission android:name="android.permission.INTERNET" />

其次,您似乎在应用程序的主线程上运行Facebook登录过程并不是一个好主意。使用异步任务将是一个更好的选择。您可以在http://developer.android.com/reference/android/os/AsyncTask.html阅读更多相关信息。 除此之外,最好使用&#34;试试&#34;和&#34; Catch&#34;防止您的应用完全崩溃。它通常具有以下语法

Try

//Block of Code Here

Catch Exception()