[英]loading profile image of G+ and Facebook in android app while offline
[英]App crashes while saving G+ photo url
用户尝试使用Google帐户登录后,我正在尝试保存Google电子邮件,姓名和个人资料照片网址。 当使用google默认个人资料图片的用户登录时,该应用程序将崩溃。 它适用于具有自定义个人资料照片的Google帐户
以下是相关代码:
private void handleSignInResult(GoogleSignInResult result){
Log.d(TAG,"handleSignInResult():"+result.isSuccess());
if(result.isSuccess()){
GoogleSignInAccount account = result.getSignInAccount();
String pname = account.getDisplayName();
String emailid = account.getEmail();
String pic_url = new String(account.getPhotoUrl().toString());
SharedPreferences userInfo = context.getSharedPreferences(getString(R.string.USER_INFO),Context.MODE_PRIVATE);
SharedPreferences.Editor editor = userInfo.edit();
editor.putString("name",pname);
editor.putString("email",emailid);
editor.putString("pic_url",pic_url);
editor.commit();
updateUI(true);
} else {
updateUI(false);
}
}
这是logcat的一部分,有例外:
--------- beginning of crash
10-16 20:02:33.731 32355 32355 E AndroidRuntime: FATAL EXCEPTION: main
10-16 20:02:33.731 32355 32355 E AndroidRuntime: Process: org.csikjsce.csi_kjsceofficial, PID: 32355
10-16 20:02:33.731 32355 32355 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=7, result=-1, data=Intent { (has extras) }} to activity {org.csikjsce.csi_kjsceofficial/org.csikjsce.csi_kjsceofficial.LoginActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:4112)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.app.ActivityThread.handleSendResult(ActivityThread.java:4155)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.app.ActivityThread.access$1600(ActivityThread.java:186)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1658)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:111)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.os.Looper.loop(Looper.java:238)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6016)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:937)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:798)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at org.csikjsce.csi_kjsceofficial.LoginActivity.handleSignInResult(LoginActivity.java:179)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at org.csikjsce.csi_kjsceofficial.LoginActivity.onActivityResult(LoginActivity.java:207)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.app.Activity.dispatchActivityResult(Activity.java:6657)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:4108)
10-16 20:02:33.731 32355 32355 E AndroidRuntime: ... 9 more
行号 207调用handleSignResult()
行号 179是String pic_url = new String(account.getPhotoUrl().toString());
注释掉第179行可以解决该问题,但是随后我无法保存需要在应用中显示用户个人资料照片的照片网址。
该错误仅发生在其Google帐户上具有默认个人资料照片的用户。
我删除了Google plus照片进行测试。 我签名时应用崩溃了。 然后我从chrome浏览器在我的google plus帐户上检查了照片网址,并获得了该网址https://lh3.googleusercontent.com/-eKoJemxhXNk/AAAAAAAAAAI/AAAAAAAAAAA/ACnBePZ9iFrmxpc1l5CPyKJ4DRH14A_Scg/s60-p-rw-no-mo/photo。 jpg
该网址类似于使用具有自定义个人资料照片的帐户登录时保存在shared_pref.xml中的网址。 上面的网址是getPhotoUrl()必须返回的内容。 它绝对不是null,但仍然在getPhotoUrl()。toString()上得到NPE,并且应用程序崩溃。
有人可以解释为什么会这样吗?
错误可以通过以下简单技巧解决:
String pic_url = ""+account.getPhotoUrl();
寻找getPhotoUrl()方法后,我发现了这个
我已经使用DEFAULT_SIGN_IN
标志配置了登录,但第一个条件即
如果用户有个人资料图片
等同于用户具有默认的个人资料图片 。 因此,具有默认个人资料图片的所有用户均不满足第一个条件,因此方法返回null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.