diff options
| author | 2019-10-31 16:19:45 +0000 | |
|---|---|---|
| committer | 2019-10-31 16:19:45 +0000 | |
| commit | 8beb64d0189eba9e12c81056f738c1b83b0d7282 (patch) | |
| tree | 30ff445fb8552f084a7f0375f8af42df156dd2e1 /location/java/android | |
| parent | 2a5a322eea8ee533ef57a0309b3e598be7805ff9 (diff) | |
| parent | c4a4833708e01065627501c37f02084974470eaa (diff) | |
Merge "Prevent crash when invoking GNSS apis"
Diffstat (limited to 'location/java/android')
| -rw-r--r-- | location/java/android/location/LocationManager.java | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 87b3be9cc26d..ca9d4d3e8812 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -2757,9 +2757,14 @@ public class LocationManager { protected boolean registerService() throws RemoteException { Preconditions.checkState(mListenerTransport == null); - mListenerTransport = new GnssStatusListener(); - return mService.registerGnssStatusCallback(mListenerTransport, - mContext.getPackageName(), mContext.getFeatureId()); + GnssStatusListener transport = new GnssStatusListener(); + if (mService.registerGnssStatusCallback(transport, mContext.getPackageName(), + mContext.getFeatureId())) { + mListenerTransport = transport; + return true; + } else { + return false; + } } @Override @@ -2817,10 +2822,14 @@ public class LocationManager { protected boolean registerService() throws RemoteException { Preconditions.checkState(mListenerTransport == null); - mListenerTransport = new GnssMeasurementsListener(); - return mService.addGnssMeasurementsListener(mListenerTransport, - mContext.getPackageName(), mContext.getFeatureId(), - "gnss measurement callback"); + GnssMeasurementsListener transport = new GnssMeasurementsListener(); + if (mService.addGnssMeasurementsListener(transport, mContext.getPackageName(), + mContext.getFeatureId(), "gnss measurement callback")) { + mListenerTransport = transport; + return true; + } else { + return false; + } } @Override @@ -2854,10 +2863,14 @@ public class LocationManager { protected boolean registerService() throws RemoteException { Preconditions.checkState(mListenerTransport == null); - mListenerTransport = new GnssNavigationMessageListener(); - return mService.addGnssNavigationMessageListener(mListenerTransport, - mContext.getPackageName(), mContext.getFeatureId(), - "gnss navigation callback"); + GnssNavigationMessageListener transport = new GnssNavigationMessageListener(); + if (mService.addGnssNavigationMessageListener(transport, mContext.getPackageName(), + mContext.getFeatureId(), "gnss navigation callback")) { + mListenerTransport = transport; + return true; + } else { + return false; + } } @Override @@ -2891,9 +2904,14 @@ public class LocationManager { protected boolean registerService() throws RemoteException { Preconditions.checkState(mListenerTransport == null); - mListenerTransport = new BatchedLocationCallback(); - return mService.addGnssBatchingCallback(mListenerTransport, mContext.getPackageName(), - mContext.getFeatureId(), "batched location callback"); + BatchedLocationCallback transport = new BatchedLocationCallback(); + if (mService.addGnssBatchingCallback(transport, mContext.getPackageName(), + mContext.getFeatureId(), "batched location callback")) { + mListenerTransport = transport; + return true; + } else { + return false; + } } @Override |