Android应用程序在Facebook登录时崩溃

尼萨尔·帕特尔(Nisarg Patel)

我是Android新手。我试图将FB登录与我的Android应用程序集成。我已按照developers.facebook.com上的所有说明进行了此集成。但是,当我尝试运行我的应用程序时,它在启动时崩溃。

请注意,我的AndroidManifest.xml中已经有Facebook App ID,元数据标签,android活动标签。

以下是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="@drawable/background">

    <RelativeLayout android:id="@+id/container" android:layout_width="match_parent"
        android:paddingBottom="20dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="20dp"
        android:layout_height="match_parent"
        android:background="#85000000">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/topSocialLoginLayout"
            android:paddingLeft="40dp"
            android:paddingRight="40dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="5dp">

            <com.facebook.login.widget.LoginButton
                android:id="@+id/btnFacebook"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_weight="5"/>

            <com.google.android.gms.common.SignInButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:id="@+id/btnGoogle"
                android:layout_weight="5" />

        </LinearLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingRight="20dp"
            android:paddingLeft="20dp"
            android:id="@+id/relLayoutMainLogin"
            android:layout_below="@id/topSocialLoginLayout">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:inputType="textEmailAddress"
                android:layout_alignParentTop="true"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:hint="@string/email"
                android:textColor="#fd9a22"
                android:textCursorDrawable="@drawable/cursor_color"
                android:textColorHint="#ffffff"
                android:id="@+id/txtUser"
                android:background="@drawable/edit_text"
                android:drawableLeft="@drawable/dr_email"
                android:drawablePadding="10dp"
                android:paddingLeft="-3dp"
                android:singleLine="true" />

            <EditText
                android:layout_width="match_parent"
                android:inputType="textPassword"
                android:layout_height="wrap_content"
                android:layout_below="@id/txtUser"
                android:id="@+id/txtPwd"
                android:hint="@string/pwd"
                android:textColor="#fd9a22"
                android:textCursorDrawable="@drawable/cursor_color"
                android:textColorHint="#ffffff"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:background="@drawable/edit_text"
                android:drawableLeft="@drawable/dr_pwd"
                android:drawablePadding="10dp"/>

            <Button
                android:layout_width="match_parent"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="5dp"
                android:layout_below="@id/txtPwd"
                android:layout_height="wrap_content"
                android:text="@string/sign_in"
                android:id="@+id/btnSignIn"
                android:background="@drawable/ainovatheme_btn_default_holo_light"
                android:onClick="login"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/btnSignIn"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#fd9a22"
                android:background="#85000000"
                android:id="@+id/txtLoginErr"
                android:layout_marginBottom="5dp"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_below="@id/txtLoginErr"
                android:text="@string/forgot_pwd"
                android:textColor="#ffffff"
                android:id="@+id/btnForgotPwd"
                android:onClick="forgotPassword"
                style="?android:attr/borderlessButtonStyle"/>

            <ImageView
                android:layout_width="fill_parent"
                android:id="@+id/hrLine"
                android:layout_height="2dp"
                android:layout_below="@id/btnForgotPwd"
                android:background="#d4dce9" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/hrLine"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_centerHorizontal="true"
                android:text="@string/create_account"
                android:textColor="#fd9a22"
                android:id="@+id/btnCreateAccountActivity"
                android:onClick="createAccount"
                style="?android:attr/borderlessButtonStyle" />


        </RelativeLayout>


    </RelativeLayout>

</RelativeLayout>

以下是我的LoginActivity的代码段:

private CallbackManager mCallbackManager;
    private FacebookCallback<LoginResult> mCallback = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            try {
                                String email = object.getString("email");
                                Log.d("Output" + "User email ", email);
                                String password = object.toString();
                                Log.d("Output" + "User psw", password);
                            } catch (JSONException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    });
            request.executeAsync();
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException e) {

        }
    };

    // ####### Facebook Sign In Coding - End #######

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        //check for internet connection
        if (!isConnectedToInternet())
        {
            //dialog if internet is not connetd
            createNetErrorDialog();
        }

        FacebookSdk.sdkInitialize(this); // ####### Facebook Sign In Coding
        mCallbackManager = CallbackManager.Factory.create(); // ####### Facebook Sign In Coding
        LoginButton FBloginButton = (LoginButton) findViewById(R.id.btnFacebook); // ####### Facebook Sign In Coding
        FBloginButton.setReadPermissions(Arrays.asList("public_profile, email, user_birthday")); // ####### Facebook Sign In Coding
        FBloginButton.registerCallback(mCallbackManager, mCallback); // ####### Facebook Sign In Coding
}

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mCallbackManager.onActivityResult(requestCode, resultCode, data);
    }

以下是我得到的例外:

java.lang.ExceptionInInitializerError
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:593)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:360)
            at android.app.Activity.setContentView(Activity.java:1932)
            at ainova.jaesa.android.main.LoginActivity.onCreate(LoginActivity.java:97)
            at android.app.Activity.performCreate(Activity.java:5326)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
            at android.app.ActivityThread.access$700(ActivityThread.java:158)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:176)
            at android.app.ActivityThread.main(ActivityThread.java:5365)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: null
            at com.facebook.internal.Validate.sdkInitialized(Validate.java:99)
            at com.facebook.FacebookSdk.getCallbackRequestCodeOffset(FacebookSdk.java:735)
            at com.facebook.internal.CallbackManagerImpl$RequestCodeOffset.toRequestCode(CallbackManagerImpl.java:109)
            at com.facebook.login.widget.LoginButton.<clinit>(LoginButton.java:58)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:593)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:360)
            at android.app.Activity.setContentView(Activity.java:1932)
            at ainova.jaesa.android.main.LoginActivity.onCreate(LoginActivity.java:97)
            at android.app.Activity.performCreate(Activity.java:5326)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
            at android.app.ActivityThread.access$700(ActivityThread.java:158)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:176)
            at android.app.ActivityThread.main(ActivityThread.java:5365)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
            at dalvik.system.NativeStart.main(Native Method)
Zied R.

1.您的第一个错误

     Caused by: null
                at com.facebook.internal.Validate.sdkInitialized(Validate.java:99)

它抛出一个 FacebookSdkNotInitializedException

你需要调用FacebookSdk.sdkInitialize(Context) 之前 setContentView()

在您的Activity的onCreate方法中,将其更改为:

 protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // here
        FacebookSdk.sdkInitialize(this); // ####### Facebook Sign In Coding
        setContentView(R.layout.login);

        //check for internet connection
        if (!isConnectedToInternet())
        {
            //dialog if internet is not connetd
            createNetErrorDialog();
        }

更新

2.第二错误:NullPointerException

之所以收到NullPointerException,是因为您在调用findViewById()之前先进行了调用setContentView(),因此在调用loginButton.registerCallback()时,loginButton为null。

只需将调用移至setContentView() t顶部:(您的完整oncreate方法应如下所示):

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        FacebookSdk.sdkInitialize(this); // ####### Facebook Sign In Coding
        setContentView(R.layout.login);

        //check for internet connection
        if (!isConnectedToInternet())
        {
            //dialog if internet is not connetd
            createNetErrorDialog();
        }

        mCallbackManager = CallbackManager.Factory.create(); // ####### Facebook Sign In Coding
        LoginButton FBloginButton = (LoginButton) findViewById(R.id.btnFacebook); // ####### Facebook Sign In Coding
        FBloginButton.setReadPermissions(Arrays.asList("public_profile, email, user_birthday")); // ####### Facebook Sign In Coding
        FBloginButton.registerCallback(mCallbackManager, mCallback); // ####### Facebook Sign In Coding
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

应用程序在Facebook登录中获取nullPointerException时崩溃

来自分类Dev

Android应用程序因Facebook登录而崩溃

来自分类Dev

Android应用程序因Facebook登录而崩溃

来自分类Dev

android Facebook SDK崩溃的应用程序?

来自分类Dev

Facebook登录-Android应用程序

来自分类Dev

暂停时Android应用程序崩溃

来自分类Dev

暂停时Android应用程序崩溃

来自分类Dev

Facebook登录android应用崩溃

来自分类Dev

React Native:使用Facebook登录名时,Android上独立的Expo构建的应用程序崩溃(适用于iOS)

来自分类Dev

当我尝试重新登录时,Android应用程序崩溃

来自分类Dev

通过 google plus ios 登录时应用程序崩溃

来自分类Dev

在发布模式下首次尝试使用Facebook sdk共享数据时,android应用程序崩溃

来自分类Dev

按下“继续使用 Facebook”时 Android 应用程序崩溃

来自分类Dev

应用程序在Facebook注销时崩溃,NullPointerException

来自分类Dev

在Android应用程序中使用Facebook登录时出现问题

来自分类Dev

在Android应用程序中使用Facebook帐户登录时出现的问题

来自分类Dev

在 Android 应用程序中使用 Facebook AccountKit 登录时出现内存泄漏

来自分类Dev

(Xamarin Forms) 启动时应用程序崩溃(使用应用程序属性登录/注销)

来自分类Dev

Android应用程序中的Facebook RSS Feed崩溃

来自分类Dev

尝试实现Facebook登录时无效的应用程序ID

来自分类Dev

如果用户取消登录,Swift iOS Facebook登录将使应用程序崩溃

来自分类Dev

Android Geofencing应用程序在启动时崩溃

来自分类Dev

Android:VerticalGridFragment导致应用程序在使用ErrorFragment时崩溃?

来自分类Dev

BluetoothChat应用程序在Android 4.4中的onDestroy()时崩溃

来自分类Dev

我的Android应用程序的gameLoop线程在退出时崩溃

来自分类Dev

单击后退按钮时,Phonegap Android应用程序崩溃

来自分类Dev

当EditText为空时,Android应用程序崩溃

来自分类Dev

启动IntentService时Android应用程序崩溃

来自分类Dev

Hello World Android应用程序在启动时崩溃

Related 相关文章

  1. 1

    应用程序在Facebook登录中获取nullPointerException时崩溃

  2. 2

    Android应用程序因Facebook登录而崩溃

  3. 3

    Android应用程序因Facebook登录而崩溃

  4. 4

    android Facebook SDK崩溃的应用程序?

  5. 5

    Facebook登录-Android应用程序

  6. 6

    暂停时Android应用程序崩溃

  7. 7

    暂停时Android应用程序崩溃

  8. 8

    Facebook登录android应用崩溃

  9. 9

    React Native:使用Facebook登录名时,Android上独立的Expo构建的应用程序崩溃(适用于iOS)

  10. 10

    当我尝试重新登录时,Android应用程序崩溃

  11. 11

    通过 google plus ios 登录时应用程序崩溃

  12. 12

    在发布模式下首次尝试使用Facebook sdk共享数据时,android应用程序崩溃

  13. 13

    按下“继续使用 Facebook”时 Android 应用程序崩溃

  14. 14

    应用程序在Facebook注销时崩溃,NullPointerException

  15. 15

    在Android应用程序中使用Facebook登录时出现问题

  16. 16

    在Android应用程序中使用Facebook帐户登录时出现的问题

  17. 17

    在 Android 应用程序中使用 Facebook AccountKit 登录时出现内存泄漏

  18. 18

    (Xamarin Forms) 启动时应用程序崩溃(使用应用程序属性登录/注销)

  19. 19

    Android应用程序中的Facebook RSS Feed崩溃

  20. 20

    尝试实现Facebook登录时无效的应用程序ID

  21. 21

    如果用户取消登录,Swift iOS Facebook登录将使应用程序崩溃

  22. 22

    Android Geofencing应用程序在启动时崩溃

  23. 23

    Android:VerticalGridFragment导致应用程序在使用ErrorFragment时崩溃?

  24. 24

    BluetoothChat应用程序在Android 4.4中的onDestroy()时崩溃

  25. 25

    我的Android应用程序的gameLoop线程在退出时崩溃

  26. 26

    单击后退按钮时,Phonegap Android应用程序崩溃

  27. 27

    当EditText为空时,Android应用程序崩溃

  28. 28

    启动IntentService时Android应用程序崩溃

  29. 29

    Hello World Android应用程序在启动时崩溃

热门标签

归档