From 41a46718b3deec95661e149b3acea2a9e54016be Mon Sep 17 00:00:00 2001 From: John Wang Date: Tue, 9 Mar 2010 15:48:58 -0800 Subject: [PATCH] Make getCellLocation return null if not available. For bug 2422284. Check the cell location and return null if the location is not available. Change-Id: Ie9a331b906a8253c9a9596365af8705dc03823ce --- telephony/java/android/telephony/CellLocation.java | 5 +++++ .../java/android/telephony/TelephonyManager.java | 5 ++++- .../android/telephony/cdma/CdmaCellLocation.java | 12 ++++++++++++ .../java/android/telephony/gsm/GsmCellLocation.java | 7 +++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/telephony/java/android/telephony/CellLocation.java b/telephony/java/android/telephony/CellLocation.java index f763d3ff4b7b0..2edfc23d8ac31 100644 --- a/telephony/java/android/telephony/CellLocation.java +++ b/telephony/java/android/telephony/CellLocation.java @@ -78,6 +78,11 @@ public abstract class CellLocation { */ public abstract void fillInNotifierBundle(Bundle bundle); + /** + * @hide + */ + public abstract boolean isEmpty(); + /** * Return a new CellLocation object representing an unknown * location, or null for unknown/none phone radio types. diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 6685c187b245d..a6b1d93f3b902 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -203,7 +203,10 @@ public class TelephonyManager { public CellLocation getCellLocation() { try { Bundle bundle = getITelephony().getCellLocation(); - return CellLocation.newFromBundle(bundle); + CellLocation cl = CellLocation.newFromBundle(bundle); + if (cl.isEmpty()) + return null; + return cl; } catch (RemoteException ex) { return null; } catch (NullPointerException ex) { diff --git a/telephony/java/android/telephony/cdma/CdmaCellLocation.java b/telephony/java/android/telephony/cdma/CdmaCellLocation.java index 2a0f8cd780ca3..84db83016a1d0 100644 --- a/telephony/java/android/telephony/cdma/CdmaCellLocation.java +++ b/telephony/java/android/telephony/cdma/CdmaCellLocation.java @@ -204,6 +204,18 @@ public class CdmaCellLocation extends CellLocation { bundleToFill.putInt("networkId", this.mNetworkId); } + /** + * @hide + */ + public boolean isEmpty() { + return (this.mBaseStationId == -1 && + this.mBaseStationLatitude == INVALID_LAT_LONG && + this.mBaseStationLongitude == INVALID_LAT_LONG && + this.mSystemId == -1 && + this.mNetworkId == -1); + } + + } diff --git a/telephony/java/android/telephony/gsm/GsmCellLocation.java b/telephony/java/android/telephony/gsm/GsmCellLocation.java index 0d4e0beafb80e..fa1f9852bd9f9 100644 --- a/telephony/java/android/telephony/gsm/GsmCellLocation.java +++ b/telephony/java/android/telephony/gsm/GsmCellLocation.java @@ -119,4 +119,11 @@ public class GsmCellLocation extends CellLocation { m.putInt("lac", mLac); m.putInt("cid", mCid); } + + /** + * @hide + */ + public boolean isEmpty() { + return (mLac == -1 && mCid == -1); + } }