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
相关产品推荐
相关产品推荐

