我正在关注https://developer.android.com/training/location/geofencing.html中的示例并使用地理围栏实施应用。
我修改了getGeofencePendingIntent()方法,如下所示:
case MotionEvent.ACTION_UP:
正如您所看到的,与示例的不同之处在于我使用额外内容来传递一些信息,因为我需要它来从通知中启动活动。
问题在于,如果我用parcelable extras取消注释这两行,在GeofenceTransitionsIntentService类的onHandleIntent()方法中我收到-1作为geofenceTransition,如果我让这些行注释,它可以正常工作并接收Geofence.GEOFENCE_TRANSITION_ENTER值。这里发生了什么?我不得不说Intent的额外内容是正确收到的。
Intent intent = new Intent(getActivity(), GeofenceTransitionsIntentService.class);
Bundle extras = new Bundle();
extras.putInt(GeofenceTransitionsIntentService.NTH_EXTRA_FIELD,currentClue);
extras.putLong(GeofenceTransitionsIntentService.GAME_ID_EXTRA_FIELD,gameId);
//extras.putParcelableArrayList(GeofenceTransitionsIntentService.ROUTES_EXTRA_FIELD,MainActivity.routes);
//extras.putParcelable(GeofenceTransitionsIntentService.USER_EXTRA_FIELD, MainActivity.user);
intent.putExtras(extras);
return PendingIntent.getService(getActivity(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
谢谢