From 9bc8299ca0b2e8396b9f2f027c440cda164ba75e Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Fri, 10 Jul 2015 09:08:13 -0700 Subject: [PATCH] Fix permissions. Legacy API should not need new permissions. Also found some more hidden/system that should have permissions. bug:22379438 bug:19257083 Change-Id: I24be0a90dffcffe03d25982a9b02eedcf03fbd59 --- .../android/telephony/TelephonyManager.java | 61 ++++++++++++++++++- .../internal/telephony/ITelephony.aidl | 12 ++-- 2 files changed, 63 insertions(+), 10 deletions(-) diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index e74344cce660b..89e9d2e1eb127 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -1339,7 +1339,21 @@ public class TelephonyManager { * @return the NETWORK_TYPE_xxxx for current data connection. */ public int getNetworkType() { - return getDataNetworkType(); + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony.getNetworkType(); + } else { + // This can happen when the ITelephony interface is not up yet. + return NETWORK_TYPE_UNKNOWN; + } + } catch(RemoteException ex) { + // This shouldn't happen in the normal case + return NETWORK_TYPE_UNKNOWN; + } catch (NullPointerException ex) { + // This could happen before phone restarts due to crashing + return NETWORK_TYPE_UNKNOWN; + } } /** @@ -1365,6 +1379,10 @@ public class TelephonyManager { * @see #NETWORK_TYPE_LTE * @see #NETWORK_TYPE_EHRPD * @see #NETWORK_TYPE_HSPAP + * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} */ /** {@hide} */ public int getNetworkType(int subId) { @@ -1407,6 +1425,9 @@ public class TelephonyManager { * @see #NETWORK_TYPE_EHRPD * @see #NETWORK_TYPE_HSPAP * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * @hide */ public int getDataNetworkType() { @@ -1419,6 +1440,10 @@ public class TelephonyManager { * @return the network type * * @param subId for which network type is returned + * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} */ /** {@hide} */ public int getDataNetworkType(int subId) { @@ -1442,6 +1467,9 @@ public class TelephonyManager { /** * Returns the NETWORK_TYPE_xxxx for voice * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * @hide */ public int getVoiceNetworkType() { @@ -1451,13 +1479,16 @@ public class TelephonyManager { /** * Returns the NETWORK_TYPE_xxxx for voice for a subId * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} */ /** {@hide} */ public int getVoiceNetworkType(int subId) { try{ ITelephony telephony = getITelephony(); if (telephony != null) { - return telephony.getVoiceNetworkTypeForSubscriber(subId); + return telephony.getVoiceNetworkTypeForSubscriber(subId, getOpPackageName()); } else { // This can happen when the ITelephony interface is not up yet. return NETWORK_TYPE_UNKNOWN; @@ -1897,6 +1928,10 @@ public class TelephonyManager { * @return {@link PhoneConstants#LTE_ON_CDMA_UNKNOWN}, {@link PhoneConstants#LTE_ON_CDMA_FALSE} * or {@link PhoneConstants#LTE_ON_CDMA_TRUE} * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} + * * @hide */ public int getLteOnCdmaMode() { @@ -1912,6 +1947,9 @@ public class TelephonyManager { * @return {@link PhoneConstants#LTE_ON_CDMA_UNKNOWN}, {@link PhoneConstants#LTE_ON_CDMA_FALSE} * or {@link PhoneConstants#LTE_ON_CDMA_TRUE} * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} */ /** {@hide} */ public int getLteOnCdmaMode(int subId) { @@ -2642,6 +2680,9 @@ public class TelephonyManager { /** * Returns the CDMA ERI icon index to display * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * @hide */ public int getCdmaEriIconIndex() { @@ -2650,6 +2691,9 @@ public class TelephonyManager { /** * Returns the CDMA ERI icon index to display for a subscription + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} */ /** {@hide} */ public int getCdmaEriIconIndex(int subId) { @@ -2671,6 +2715,9 @@ public class TelephonyManager { * 0 - ON * 1 - FLASHING * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * @hide */ public int getCdmaEriIconMode() { @@ -2681,6 +2728,10 @@ public class TelephonyManager { * Returns the CDMA ERI icon mode for a subscription. * 0 - ON * 1 - FLASHING + * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} */ /** {@hide} */ public int getCdmaEriIconMode(int subId) { @@ -2700,6 +2751,9 @@ public class TelephonyManager { /** * Returns the CDMA ERI text, * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * @hide */ public String getCdmaEriText() { @@ -2709,6 +2763,9 @@ public class TelephonyManager { /** * Returns the CDMA ERI text, of a subscription * + *

+ * Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} */ /** {@hide} */ public String getCdmaEriText(int subId) { diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 6db88a76672f0..a93e465d992ca 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -455,9 +455,9 @@ interface ITelephony { /** * Returns the network type for data transmission - * @param callingPackage package making the call. + * Legacy call, permission-free */ - int getNetworkType(String callingPackage); + int getNetworkType(); /** * Returns the network type of a subId. @@ -479,17 +479,13 @@ interface ITelephony { */ int getDataNetworkTypeForSubscriber(int subId, String callingPackage); - /** - * Returns the network type for voice - */ - int getVoiceNetworkType(); - /** * Returns the voice network type of a subId * @param subId user preferred subId. + * @param callingPackage package making the call. * Returns the network type */ - int getVoiceNetworkTypeForSubscriber(int subId); + int getVoiceNetworkTypeForSubscriber(int subId, String callingPackage); /** * Return true if an ICC card is present