使用 Firebase 的 GoogleApiClient 中出现罕见的 NullPointerException

2024-04-16

我正在使用 GoogleApiClient 使用 Google 帐户登录用户。基本上,我使用 Firebase Auth 和 Google 登录。

但我每天都会在某些设备上遇到这种崩溃。当我在自己的一些设备(OnePlus 3、Nexus 5X、Moto G 等)上进行测试时,我从未见过这种崩溃。

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase(java.util.Locale)' on a null object reference
       at com.google.android.gms.internal.zzamy.zzd(Unknown Source)
       at com.google.android.gms.internal.zzamv.n(Unknown Source)
       at com.google.android.gms.internal.zzamv.zza(Unknown Source)
       at com.google.android.gms.internal.zzamv$2.run(Unknown Source)
       at java.lang.Thread.run(Thread.java:818)

这就是我实例化 GoogleApiClient 所做的事情。在正常情况下我没有看到崩溃,但在某些设备中我看到了这种情况。这是我在代码中所做的事情,

String mClientId = parcel.getProviderExtra().getString(CLIENT_ID_KEY);
GoogleSignInOptions googleSignInOptions;

googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(mClientId)
                .requestEmail()
                .build();

mGoogleApiClient = new GoogleApiClient.Builder(App.getContext())
                .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
                .build();

mGoogleApiClient.connect();

我在这里做错了什么?我最好的选择是App.getContext()它提供了应用程序上下文来实例化客户端。这会是问题所在吗?

我可以使用活动上下文,但使用它会导致内存泄漏。这里有什么问题以及如何解决?

这给一些用户带来了非常糟糕的体验,他们在打开应用程序并尝试登录后就崩溃了。


您好,您可以尝试这个代码,这是我的项目中的工作代码 首先在创建时初始化 google api 客户端

public void initGPlus() {
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();
}

然后在按钮上单击调用另一个函数

 Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);

在活动结果中刚刚得到您的响应并在函数中处理该结果

if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleSignInResult(result);
    }

在您的活动中实现此接口

 implements GoogleApiClient.OnConnectionFailedListener
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Firebase 的 GoogleApiClient 中出现罕见的 NullPointerException 的相关文章

  • IE8 和怪异模式

    IE8 是否像 IE6 7 一样以怪异模式运行 我有一个网页 其中有一些非常奇怪的代码 内容以填充和负边距居中 它在 IE6 7 和其他浏览器中可以正常工作 但在 IE8 中 内容区域的宽度只有一半并且不居中 怪异模式的标志 源代码在 DO
  • 如何在 Flutter 中对 RaisingButton 的颜色进行动画处理?

    我有一个RaisedButton 我想要animate它的颜色来自green to red 反之亦然 每次用户单击它时 这怎么能做到呢 您可以使用AnimatedContainer https api flutter dev flutter
  • 蓝牙 LE 中步数计数的服务和特性是什么?

    低功耗蓝牙中步数的服务 特征值 UUID 是什么 蓝牙文档的相应页面没有列出任何步骤 如何计算步数 计步设备是否使用跑步速度和步频服务 谢谢 有些设备确实使用跑步速度和节奏服务 您应该能够通过将 总距离 除以 瞬时步长 两者都可以在RSC测
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • 从 Ruby 运行 shell 命令:在显示输出时捕获输出?

    我有个问题 我想从另一个 ruby 脚本运行一个 ruby 脚本并捕获它的输出信息 同时让它也输出到屏幕上 runner usr bin env ruby print Enter your password password gets ch
  • Spring 的 LdapTemplate 搜索:PartialResultException:未处理的延续引用;剩余名称 '/'

    我通过 LDAP 为某个使用 spring 制作的应用程序添加用户 虽然这适用于大多数情况 但在某些情况下 它不起作用 检索我使用的用户 public class LdapUserServiceImpl implements ILdapUs
  • 用于将用户发送至设备应用商店上的应用评论页面的 URL

    为了将 iTunes App Store 置于最前面并打开它以显示应用程序的评论页面 要启动的 URL 是什么 我想将我的用户发送到 撰写评论 页面 其他一些 SO 答案提供了如下 URL 但它似乎不起作用 itms apps itunes
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • Elastic Beanstalk、Bundler 找不到 gem“bundler”的兼容版本

    我已经尝试过将 Elastic Beanstalk 用于 Rails 当我运行 eb deploy 时出现此错误 我需要至少安装bundler 1 8 4 知道如何解决这个问题吗 Bundler could not find compati
  • Angular2排序数组用于在html中的*ngFor中显示

    我正在循环浏览所有帖子 li 当显示每个帖子的日期时 我会执行以下操作 post date date yyyy MM dd HH mm ss 我想要做的是按最新的第一个顺序显示所有帖子 我尝试过使用类似的管道 li li import Pi
  • 列表框:添加组合框作为项目?

    是否可以将列表框的每个项目都作为组合框 我需要这个 因为我将列表框设置为可检查 然后我需要让用户从列表中每个元素的不同选项中进行选择 Thanks 如果您不打算分发您的应用程序 那么您还可以查看 TreeView 控件 请参阅此示例 COD
  • 如何测试send_file烧瓶

    我有一个小型烧瓶应用程序 它需要上传一些图像并将它们转换为多页 tiff 没什么特别的 但是如何测试多个文件的上传和文件下载呢 我的测试客户端 class RestTestCase unittest TestCase def setUp s
  • 捕获 SQLAlchemy 异常

    我可以使用什么捕获 SQLAlechmy 异常的上层异常 gt gt gt from sqlalchemy import exc gt gt gt dir exc ArgumentError CircularDependencyError
  • 从外部material-ui组件访问主题

    我有一个使用标准深色主题的主题提供商 我希望能够从我自己的自定义组件访问该主题的详细信息 但我不知道如何做到这一点 在下面的例子中 this props theme未定义 ReactDOM render
  • 如何在不显示父活动的情况下将一个全屏对话框片段替换为另一个全屏对话框片段?

    我有一个使用单个自定义 DialogFragment 类的活动 它的外观是数据驱动的 因此不同的调用看起来可能相当不同 它是 全屏 即 setStyle DialogFragment STYLE NO FRAME android R sty
  • Vuex store.watch 只接受 Vue routerguard 中的函数

    我正在尝试观察并等待 Vue 路由器防护从 Vuex 获取最终值 但它会抛出异常 vuex store watch 只接受一个函数 这是代码 const isAdmin get store getters user isAdmin unde
  • Google Analytics PHP(发送信息)

    大意 我正在开发一个项目 我需要使用 Google Analytics 服务器端 我不需要检索信息 但我需要发送信息 我最终可以发送 js 脚本客户端 但在这种情况下它不是一个选项 以下大多数链接都非常旧 2012年 检索 不是我需要的 我
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la
  • 如何循环遍历颜色数组以更改按键背景(按下/向下)

    互联网 如果这与其他人没有什么关系 请原谅我 但我会将其留在这里 以防这是一个有效的问题 我正在尝试创建一个文本区域字段 其中用户每次按下键 a z 都会触发背景颜色更改 在数组中列出 我一直在用 JQuery 做这件事 我想我已经很接近了
  • SQL Express 上的 OLAP

    我想知道是否有任何桌面 OLAP 解决方案可以使用 SQL Express 因此不需要 Analysis Services 我的任务是找到一种方法让我们的客户能够制作 临时 报告 但其中绝大多数都是在 Sql Express 上 在以前的工

随机推荐

  • 将以毫秒为单位的日期时间转换为双精度或整数?

    我有一个看起来不错的字符串 如下所示 TimeString 2011 01 02 22 06 52 091 现在我想将其转换为双精度数 并将其保存为双精度数 我是用c 做的 我该怎么做呢 网上实在找不到答案 Edit 时间是一种金融货币报价
  • Google Analytics“用户计数”与大查询“用户计数”不匹配

    我们的 Google Analytics 用户计数 与我们的大查询 用户计数 不匹配 我计算得正确吗 通常 GA 和 BQ 非常接近 尽管不完全一致 最近 GA 与 BQ 中的用户数并不一致 我们的 每个用户的会话数 通常非常正常分配 在过
  • 如何编写自定义操作 DLL 以在 MSI 中使用?

    这是我打算自己回答的问题 但请随意添加其他方法来完成此任务 我正在打包一个应用程序以用于各种配置 并且我确定在 MSI 中执行自定义逻辑的最可靠方法是编写我自己的自定义操作 DLL 该 DLL 能够从 PROPERTY 表中读取 写入 终止
  • 在 Monogame 中使用 BMP 图像作为字体

    有没有办法使用 BMP 图像加载自定义字体 我在网上看到了 Microsoft 提供的解决方案 但在尝试运行此解决方案时 我不断收到内容加载异常 看起来这曾经适用于 XNA 但对于 Monogame 可能不再是这样了 我想要自己的自定义字体
  • Git:推送到多个远程

    Short 如果您将多个远程存储库链接到本地 文件 是否有一种方法可以同时推送到它们 Long 由于工作原因 我的代码必须使用gitlab和github遥控器 因此 一旦我进行了一些本地更改 我就想更新这两个存储库 我的 git confi
  • 重新渲染子视图后,主干事件会多次触发

    我们有一个由侧边栏和几个子视图组成的主干视图 为简单起见 我们决定让侧边栏和子视图由单个视图管理render功能 但是 那click edit单击侧边栏项目之一后 事件似乎会多次触发 例如 如果我从 常规 开始并单击 edit then h
  • Vim: set langmap=e;h 破坏 supertab 插件

    我是 Vim 新手 正在尝试设置一些插件 到目前为止我已经安装了 Pathogen pyflakes 和 supertab 后者似乎不起作用 紧迫tab而在插入模式下只需写入字符串
  • 如何从 UWP(又名 .NET Core)中的 Type 对象获取 Assembly

    Type 类在 NET Framework 中有一个Assembly 属性 然而 当您编写使用 NET Core 的 UWP 时 此属性就消失了 仅 AssemblyQualifiedName 属性可用 我怎样才能从这个名字进入Assemb
  • R:如何用文本框注释 ggplot?

    我希望添加一个小的白色文本框 并在 ggplot 绘图的正文中添加自定义文本 我要添加的文本是为了标识我要添加到绘图中的水平线 ggplot cb emp geom point aes x grossunits y rate color a
  • 在 StringTokenizer 中使用多个分隔符

    我想知道如何在 java 中使用 StringTokenizer 的多个分隔符 例如其中之一 将作为分隔符出现 而且一次只会有一个 Use the 有两个参数的构造函数 http docs oracle com javase 6 docs
  • r - 如何清除 rJava 使用的内存?

    我正在使用 xlsx 包创建工作簿 工作表 将数据写入工作表 然后保存工作簿 然而 当我多次重复这组操作时 我开始出现错误消息 gt Error in jcheck silent FALSE java lang OutOfMemoryErr
  • DbSet、模型构建器和 EF 导航属性

    我正在尝试实现一个多租户应用程序 在其中通过租户对象查询数据库 而不是直接从上下文中查询 在我拥有这个之前 public User GetUserByEmail string email using var db CreateContext
  • 为子域设置了 Cookie,但 IE 开发工具在根域显示 Cookie。我缺少什么?

    我们有许多网站挂在根域上 例如 dev mydomain co nz test mydomain co nz www mydomain co nz 我使用 Fiddler 监控与 dev mydomain co nz 的连接 并收到一个带有
  • Eclipse:无法加载 JNI 共享库“C:\Program Files(x86)\Java\jdk1.7.0_15\bin\..\jre\bin\client\jvm.dll

    我正在尝试安装 Eclipse 为了安装我已经完成了以下操作 安装JDK 7u15 64位 实际下载名称 jdk 7u15 windows i586 exe 在C Program Files x86 Java JDK 1 7 0 15 我在
  • 使用 Python 可视化 LDA 模型

    我有一个 LDA 模型 包含 10K 文档中 10 个最常见的主题 现在它只是对每个主题的单词及其相应概率分布的概述 我想知道 python 是否有可用的东西来可视化这些主题 pyLDAvis https pypi python org p
  • cudaMallocManaged() 返回“不支持的操作”

    在 CUDA 6 0 中尝试托管内存给了我operation not supported打电话时cudaMallocManaged include cuda runtime h include
  • 合理的密码强度正则表达式

    我们使用标准的 ASP NET 身份验证提供程序 恰好是 AspNetSqlMembershipProvider 默认密码强度要求对于我们的需求来说有点过高 我们要求用户输入至少由字母数字组成的密码 即 必须包含字母和至少一个数字 如果用户
  • 拒绝 git 推送

    To email protected cdn cgi l email protection xxx xxxxx git rejected master gt master non fast forward error failed to p
  • F# 类型函数和 [] 属性

    这两个 F 类型函数有什么区别 let defaultInstance1 lt a when a new unit gt a gt new a
  • 使用 Firebase 的 GoogleApiClient 中出现罕见的 NullPointerException

    我正在使用 GoogleApiClient 使用 Google 帐户登录用户 基本上 我使用 Firebase Auth 和 Google 登录 但我每天都会在某些设备上遇到这种崩溃 当我在自己的一些设备 OnePlus 3 Nexus 5