From ac61f6bc2b24f7ab03cdb0089c67c4034ea8549c Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 19 May 2009 09:14:41 -0400 Subject: [PATCH] Telephony: Allow getCellLocation() if client has permission ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION should imply ACCESS_COARSE_LOCATION, so either of these permissions should be sufficient to allow TelephonyManager.getCellLocation(). Signed-off-by: Mike Lockwood --- .../java/com/android/server/TelephonyRegistry.java | 10 +++++++--- telephony/java/android/telephony/TelephonyManager.java | 5 +++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/services/java/com/android/server/TelephonyRegistry.java b/services/java/com/android/server/TelephonyRegistry.java index 22af02b5436f1..88f47fda431fe 100644 --- a/services/java/com/android/server/TelephonyRegistry.java +++ b/services/java/com/android/server/TelephonyRegistry.java @@ -112,9 +112,13 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { if (events != 0) { // check permissions if ((events & PhoneStateListener.LISTEN_CELL_LOCATION) != 0) { - mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.ACCESS_COARSE_LOCATION, null); - + // ACCESS_FINE_LOCATION implies ACCESS_COARSE_LOCATION + if (mContext.checkCallingPermission( + android.Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.ACCESS_COARSE_LOCATION, null); + } } synchronized (mRecords) { diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index e83699123f1c5..49a7750b46113 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -192,8 +192,9 @@ public class TelephonyManager { /** * Returns the current location of the device. * - *

Requires Permission: {@link android.Manifest.permission#ACCESS_COARSE_LOCATION - * ACCESS_COARSE_LOCATION}. + *

Requires Permission: + * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION} or + * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION}. */ public CellLocation getCellLocation() { try {