You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codename One Android端GeoFence添加时崩溃问题求助

Android端GeoFence添加崩溃问题求助(Codename One)

我在应用中实现了GeoFence功能,Codename One的Android构建流程更新后,出现了仅Android设备存在的Bug:当设备处于GeoFence区域内时添加GeoFence,应用会崩溃,iOS设备无此问题。

问题详情

  • GeoFence在iOS设备上运行正常
  • Android设备处于GeoFence区域外时,添加GeoFence无异常
  • Android设备处于GeoFence区域内时添加,应用会弹出“This app has a bug”提示并崩溃

相关代码

Geofence gf = new Geofence(fenceID, location, courtDiameter, -1);

try {
    LocationManager.getLocationManager().addGeoFencing(GeofenceWhoPlaysImpl.class, gf);
} catch (Exception eLoc) {
    UserInfo.setLogWP("Location! Add GeoFence error: " + eLoc.getMessage());
}

核心异常

java.lang.RuntimeException: Unable to start receiver com.codename1.location.BackgroundLocationBroadcastReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.location.GeofencingEvent.hasError()' on a null object reference

完整崩溃日志

2024-05-19 16:03:46.903  4970-4970  HoneySpace...lderFRView com.sec.android.app.launcher         I  updateCurrentPageOnLayout page=0
2024-05-19 16:03:49.704  2259-4617  SLocation               system_server                        W  GeopointGeofenceManager - refresh wifi to receive loc
2024-05-19 16:03:49.704  2259-4617  SLocation               system_server                        D  GeopointGeofenceManager - Location reported : fix method = 4 / 20.637
2024-05-19 16:03:55.954  2259-4617  SLocation               system_server                        W  GeopointGeofenceManager - refresh wifi to receive loc
2024-05-19 16:03:55.954  2259-4617  SLocation               system_server                        D  GeopointGeofenceManager - Location reported : fix method = 4 / 19.136
2024-05-19 16:03:58.048  2259-4381  ActivityManager         system_server                        D  Received SERVICE intent 0xbc5f472 Key{startService pkg=com.google.android.gms/geofencer_provider intent=act=com.google.android.location.internal.action.GEOFENCER_AR_RESULT pkg=com.google.android.gms cmp=com.google.android.gms/com.google.android.location.internal.PendingIntentCallbackService flags=0x2000000 u=0} requestCode=0 from uid 10237
2024-05-19 16:04:12.491  2259-6340  ActivityManager         system_server                        D  Received BROADCAST intent 0x31dc032 Key{broadcastIntent pkg=com.whosplays.app intent=act=com.codename1.location.backgroundlocationbroadcastreceiver.action.ACTION_RECEIVE_GEOFENCE dat=http://codenameone.com/... cmp=com.whosplays.app/com.codename1.location.BackgroundLocationBroadcastReceiver flags=0x4000000 u=0} requestCode=0 sent=0 from uid 10237
--------- beginning of crash
2024-05-19 16:04:12.499  5954-5954  AndroidRuntime          pid-5954                             E  FATAL EXCEPTION: main
                                                                                                    Process: com.whosplays.app, PID: 5954
                                                                                                    java.lang.RuntimeException: Unable to start receiver com.codename1.location.BackgroundLocationBroadcastReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.location.GeofencingEvent.hasError()' on a null object reference
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4905)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loopOnce(Looper.java:230)
                                                                                                        at android.os.Looper.loop(Looper.java:319)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8919)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
                                                                                                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.location.GeofencingEvent.hasError()' on a null object reference
                                                                                                        at com.codename1.location.BackgroundLocationBroadcastReceiver.onReceive(BackgroundLocationBroadcastReceiver.java:134)
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4896)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0) 
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498) 
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                                        at android.os.Looper.loopOnce(Looper.java:230) 
                                                                                                        at android.os.Looper.loop(Looper.java:319) 
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8919) 
                                                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578) 
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) 
2024-05-19 16:04:17.511  2259-8082  ActivityManager         system_server                        D  Received BROADCAST intent 0x31dc032 Key{broadcastIntent pkg=com.whosplays.app intent=act=com.codename1.location.backgroundlocationbroadcastreceiver.action.ACTION_RECEIVE_GEOFENCE dat=http://codenameone.com/... cmp=com.whosplays.app/com.codename1.location.BackgroundLocationBroadcastReceiver flags=0x4000000 u=0} requestCode=0 sent=0 from uid 10237
2024-05-19 16:04:17.665  6293-6293  AndroidRuntime          pid-6293                             E  FATAL EXCEPTION: main
                                                                                                    Process: com.whosplays.app, PID: 6293
                                                                                                    java.lang.RuntimeException: Unable to start receiver com.codename1.location.BackgroundLocationBroadcastReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.location.GeofencingEvent.hasError()' on a null object reference
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4905)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loopOnce(Looper.java:230)
                                                                                                        at android.os.Looper.loop(Looper.java:319)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8919)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
                                                                                                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.location.GeofencingEvent.hasError()' on a null object reference
                                                                                                        at com.codename1.location.BackgroundLocationBroadcastReceiver.onReceive(BackgroundLocationBroadcastReceiver.java:134)
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4896)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0) 
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498) 
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                                        at android.os.Looper.loopOnce(Looper.java:230) 
                                                                                                        at android.os.Looper.loop(Looper.java:319) 
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8919) 
                                                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578) 
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) 
2024-05-19 16:04:21.043  2259-2259  InputMetho...gerService system_server                        W  DexOnPCStateChangeObserver :  onChange(), keyboardState - 0 state 1
2024-05-19 16:04:30.688  2259-4617  SLocation               system_server                        W  GeopointGeofenceManager - refresh wifi to receive loc
2024-05-19 16:04:30.689  2259-4617  SLocation               system_server                        D  GeopointGeofenceManager - Location reported : fix method = 4 / 18.31
2024-05-19 16:04:36.220  2259-8082  ActivityManager         system_server                        D  Received BROADCAST intent 0x31dc032 Key{broadcastIntent pkg=com.whosplays.app intent=act=com.codename1.location.backgroundlocationbroadcastreceiver.action.ACTION_RECEIVE_GEOFENCE dat=http://codenameone.com/... cmp=com.whosplays.app/com.codename1.location.BackgroundLocationBroadcastReceiver flags=0x4000000 u=0} requestCode=0 sent=0 from uid 10237
2024-05-19 16:04:36.227  6504-6504  AndroidRuntime          com.whosplays.app                    E  FATAL EXCEPTION: main
                                                                                                    Process: com.whosplays.app, PID: 6504
                                                                                                    java.lang.RuntimeException: Unable to start receiver com.codename1.location.BackgroundLocationBroadcastReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.location.GeofencingEvent.hasError()' on a null object reference
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4905)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loopOnce(Looper.java:230)
                                                                                                        at android.os.Looper.loop(Looper.java:319)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8919)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
                                                                                                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.location.GeofencingEvent.hasError()' on a null object reference
                                                                                                        at com.codename1.location.BackgroundLocationBroadcastReceiver.onReceive(BackgroundLocationBroadcastReceiver.java:134)
                                                                                                        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4896)
                                                                                                        at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0) 
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498) 
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                                        at android.os.Looper.loopOnce(Looper.java:230) 
                                                                                                        at android.os.Looper.loop(Looper.java:319) 
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8919) 
                                                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578) 
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

请问该问题的触发原因是什么?如何进行调试并修复,使GeoFence无论设备当前位置如何都能正常工作?

内容的提问来源于stack exchange,提问作者Oscar Naranjo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:30:54