簡體   English   中英

Facebook中的NullPointerException onCompleted()

[英]NullPointerException in Facebook onCompleted()

我的應用崩潰,無法在任何設備上復制。

我的Crashlytics返回三個問號??? 並給出如下的堆棧跟蹤:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
   at myproject.app.android.SignLog.SignLogFragment$2.onCompleted()
   at com.facebook.Request$1.onCompleted()
   at com.facebook.Request$4.run()
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:6141)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

這是因為空指針異常是由對空對象調用toString()引起的,但這全都在try catch塊內調用,因此即使存在空值,這也會導致崩潰,我對此感到困惑。

                @Override
                public void onCompleted(GraphUser user, Response response) {

                    if (response.getError() == null && user != null)
                    {
                        try {
                            params.put("first_name", user.getFirstName());
                            params.put("last_name", user.getLastName());
                            params.put("email_address", user.getProperty("email").toString());
                            params.put("user_gender", user.getProperty("gender").toString());

                            String image = "http://graph.facebook.com/" + user.getId() + "/picture?type=large";
                            try {
                                byte[] data = image.getBytes("utf-8");
                                image = Base64.encodeToString(data, Base64.DEFAULT);
                                image = image.replaceAll("(?:\\r\\n|\\n\\r|\\n|\\r)", "");
                            } catch (Exception e) {
                            }
                            params.put("image_url", image);
                            params.put("social_access_token", session.getAccessToken());
                            params.put("social_user_identifier", user.getId());
                            params.put("social_login_source", "Facebook");

                            NetworkTaskHandler nHandler = new NetworkTaskHandler(getActivity(), true);

                            String url = "social_login";
                            nHandler.callAsyncTask(params, url, "Logging in...", true, new AsyncTaskCompleteListener() {

                                @Override
                                public void onAsyncTaskComplete(String response, boolean success) {

                                    if (success == true) {
                                        setUpUserDetails(response);
                                    } else {
                                        Toast.makeText(getActivity(), response, Toast.LENGTH_SHORT).show();
                                        callFacebookLogout();
                                    }
                                }


                            });
                        }catch(Exception e)
                        {
                            Toast.makeText(getActivity(), "Could not log in", Toast.LENGTH_SHORT).show();
                            revokeFacebookPermissions(session);
                            callFacebookLogout();
                        }
                    }
                    else
                    {
                        Toast.makeText(getActivity(), "Could not log in", Toast.LENGTH_SHORT).show();
                        revokeFacebookPermissions(session);
                        callFacebookLogout();
                    }
                }

如我上面所述,我實際上無法復制此崩潰,但是我的某些應用程序用戶正在發生此崩潰,主要是在HTC one(m8)和三星Galaxy S6上。

檢查財產emailgender

params.put("email_address", user.getProperty("email") != null ? user.getProperty("email").toString() : "");
params.put("user_gender", user.getProperty("gender") != null ? user.getProperty("gender").toString() : "");

更新

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM