0 评论

0 收藏

分享

[Android开发相关技术] 复杂项目即时通讯从android 5升级android x后遗症之解决#77 java.lang.NullPointerExc

复杂项目即时通讯从android 5升级android x后遗症之解决#77 java.lang.NullPointerException解决-优雅草卓伊凡77 java.lang.NullPointerException
Attempt to invoke virtual method ‘int java.lang.Integer.intValue()’ on a null object reference
com.guantaoyunxin.app.ui.MainActivity.onPermissionsDenied(SourceFile:35)
报错解决方案
bugly给出的建议是
该异常表示尝试去调用virtual method,使用了一个空对象引用,建议您检查引用的对象是否为空。
[解决方案]:这种异常通常是调用一个对象的方法抛出的,凡是调用一个对象的方法之前,一定要进行判空或者进行try-catch,这样基本可以规避大部分空指针异常。
Attempt to invoke virtual method ‘void android.view.View.setTranslationZ(float)’ on a null object reference
android.view.View$6.setValue support 24.2.1 的bug
https://code.google.com/p/android/issues/detail?id=22499
Attempt to invoke virtual method ‘android.net.NetworkInfo$State android.net.NetworkInfo.getState()’ on a null object reference
ConnectivityManager.getNetworkInfo(Network) 返回了null。需检查权限以及是否机型兼容问题。
Attempt to invoke virtual method ‘java.lang.String android.content.Context.getPackageName()’ on a null object reference
最常见是在 回调接口, 如 网络请求回调,第三方登录回调 返回的时候 调用 context.startActivity 时 context 为空导致。可以在 context 为空的时候使用 Application Context, 加上
if (!(context instanceof Activity)) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
引言
之前说过我们因为升级了android x 带来了 几百个 兼容性问题,因此我们需要一步步一步步,一个个一个个解决,目前我们优雅草三股东大佬已经解决了几十个接近100个,其他的我们其他人也需要帮帮忙,目前至此至少整体没啥大问题不影响运营,就是优化了,问题很多但是都可以解决,毕竟我们还接入了bugly专业版的sdk可以跟踪异常
解决 NullPointerException 在 MainActivity.onPermissionsDenied 方法中的问题
这个错误表明在 MainActivity.onPermissionsDenied(SourceFile:35) 方法中,尝试在一个 null 对象上调用 intValue() 方法。
错误分析
错误信息显示:
  • 你正在尝试调用 Integer.intValue() 方法
  • 但该 Integer 对象是 null
  • 错误发生在 MainActivity 类的 onPermissionsDenied 方法的第 35 行
可能的原因
  • 你有一个 Integer 类型的变量,但没有初始化或赋值为 null
  • 从某个方法获取 Integer 返回值时得到了 null
  • 在将 Integer 转换为原始 int 类型时没有进行 null 检查
解决方案方案1:添加 null 检查// 修改前的代码可能类似这样:int value = someInteger.intValue();// 修改为:if (someInteger != null) {    int value = someInteger.intValue();} else {    // 处理 null 情况,例如赋予默认值    int value = 0; // 或其他适当的默认值}方案2:使用 Optional (Java 8+)int value = Optional.ofNullable(someInteger).orElse(0);方案3:检查权限回调方法
由于错误发生在 onPermissionsDenied 方法中,你可能需要检查权限请求的回调处理:
@Overridepublic void onPermissionsDenied(int requestCode, List<String> perms) {    // 确保 requestCode 或 perms 的处理中不会对 null 调用 intValue()    if (perms != null) {        // 处理被拒绝的权限    }    // 或者如果问题与 requestCode 相关:    Integer requestCodeWrapper = ...; // 检查这里的代码    if (requestCodeWrapper != null) {        int code = requestCodeWrapper.intValue();        // 使用 code    }}方案4:检查第35行代码
查看 MainActivity.java 文件的第35行(或附近),找到使用 Integer.intValue() 的地方,确保对象不为 null。
预防措施
  • 在使用包装类型(如 Integer)时总是进行 null 检查
  • 考虑使用原始类型(int)如果 null 不是有效值
  • 使用注解如 @Nullable 和 @NonNull 来标记可能为 null 的参数和返回值

优雅草论坛2022年8月11日大改,优雅草论坛变回只服务于客户的提问交流论坛,详情查看优雅草8月11日大改,原因详情查优雅草外卖乐关闭

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
yac2025
优雅草的临时工
主题 328
回复 0
粉丝 0