问题描述

我们游戏接入华为游戏服务sdk 6.1.0.301版本后,使用华为帐号(实名信息为未成年人)测试,登录后出现SDK的防沉迷提示弹框,点击“知道了”,游戏闪退,报错如下:

java.lang.NullPointerException
  Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
  com.huawei.hms.utils.ResourceLoaderUtil.getStringId(ResourceLoaderUtil.java:1)
  com.huawei.hms.jos.games.player.AntiAddictionService$c.run(Unknown Source:33)
  android.os.Handler.handleCallback(Handler.java:900)
  android.os.Handler.dispatchMessage(Handler.java:103)
  android.os.Looper.loop(Looper.java:219)
  android.app.ActivityThread.main(ActivityThread.java:8668)
  java.lang.reflect.Method.invoke(Native Method)

问题分析

看报错类是华为sdk内部类错误,不清楚报错原因,联系华为技术支持请求帮忙看下问题(可提单联系),技术回复是上下文Context为null,应该是没有设置上下文,初始化接口调用之前需要设置上下文Context,代码在文档和demo中都有示例,让我认真检查代码,附参考文档

ResourceLoaderUtil.setmContext(this);

图片

问题解决

按照技术回复添加代码后问题解决。我们是直接从游戏sdk旧版本升级到新版本来的,只修改了init接口调用,没有按照官方文档从头接入才出现的问题,以后接入sdk一定要从头检查。


华为开发者论坛
352 声望56 粉丝

华为开发者论坛是一个为开发者提供信息传播、开发交流、技术分享的交流空间。开发者可以在此获取技术干货、华为源码开放、HMS最新活动等信息,欢迎大家来交流分享!