Prevent crash when invoking GNSS apis

GNSS APIs may crash when invoked on devices without GNSS, fix this
implementation.

Bug: 143591625
Test: manual
Change-Id: I6de563df96bc4605852989243c38e5d5278cbda0
(cherry picked from commit c4a4833708e01065627501c37f02084974470eaa)
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index c3aae7d..f33af14 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -2750,9 +2750,14 @@
         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
@@ -2810,10 +2815,14 @@
         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
@@ -2847,10 +2856,14 @@
         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
@@ -2884,9 +2897,14 @@
         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