[英]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上。
檢查財產email
和gender
:
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.