【发布时间】:2023-03-04 09:23:01
【问题描述】:
按照谷歌登录指南,我已经在我的应用程序中实现了它,它按预期工作,但是在第一次试验中,我在尝试获取配置文件时遇到了一个空异常。因此,经过一番搜索,我找到了GoogleSignInAccount getPhotoUrl() return null,在删除和添加谷歌帐户后确实出现了同步问题,我设法正确获取了照片网址。
目前我要获取的数据在 try catch 块中,如下所示:
try{
GoogleSignInAccount acct = result.getSignInAccount();
//Log.d(TAG,acct.getDisplayName());
String UserName = acct.getDisplayName();
String UserEmail=acct.getEmail();
String UserID=acct.getId();
String UserPhoto = acct.getPhotoUrl().toString();;
Log.d(TAG,UserPhoto);
Log.d(TAG,UserName);
Log.d(TAG,UserEmail);
Log.d(TAG,UserID);
}catch (Exception e){
e.printStackTrace();
}
我的问题是如何处理部分信息丢失的情况?我如何区分 acct.getPhotoUrl().toString();可以产生 NPE 和 acct.getDisplayName();那也可以产生NPE?
有人有想法吗?
【问题讨论】:
-
在对可能为空的对象调用方法之前只需添加一个空检查,如文档中所述:developers.google.com/android/reference/com/google/android/gms/…
-
所以在你的代码中,使用类似这样的东西:
String UserPhoto = acct.getPhotoUrl() != null ? acct.getPhotoUrl().toString() : "";,如果用户没有照片,"" 是你想要使用的默认值。这同样适用于可能为空的任何其他字段 -
好吧,我最终按照您的建议进行了空检查,您可以将其作为答案,我会接受它
标签: android google-signin