diff options
3 files changed, 35 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java index 7c303ff..2c8e1dc 100644 --- a/services/core/java/com/android/server/connectivity/Tethering.java +++ b/services/core/java/com/android/server/connectivity/Tethering.java @@ -42,6 +42,7 @@ import android.os.Message; import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; +import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.telephony.Phone; @@ -630,8 +631,11 @@ public class Tethering extends BaseNetworkObserver { } public void checkDunRequired() { - int secureSetting = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.TETHER_DUN_REQUIRED, 2); + int secureSetting = 2; + TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); + if (tm != null) { + secureSetting = tm.getTetherApnRequired(); + } synchronized (mPublicSync) { // 2 = not set, 0 = DUN not required, 1 = DUN required if (secureSetting != 2) { diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index e38aff0..9e008ea 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -3083,6 +3083,26 @@ public class TelephonyManager { } /** + * Check TETHER_DUN_REQUIRED and TETHER_DUN_APN settings, net.tethering.noprovisioning + * SystemProperty, and config_tether_apndata to decide whether DUN APN is required for + * tethering. + * + * @return 0: Not required. 1: required. 2: Not set. + * @hide + */ + public int getTetherApnRequired() { + try { + return getITelephony().getTetherApnRequired(); + } catch (RemoteException ex) { + Rlog.e(TAG, "hasMatchedTetherApnSetting RemoteException", ex); + } catch (NullPointerException ex) { + Rlog.e(TAG, "hasMatchedTetherApnSetting NPE", ex); + } + return 2; + } + + + /** * Values used to return status for hasCarrierPrivileges call. */ /** @hide */ diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 0a50d54..bf7f332 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -657,6 +657,15 @@ interface ITelephony { int getPreferredNetworkType(); /** + * Check TETHER_DUN_REQUIRED and TETHER_DUN_APN settings, net.tethering.noprovisioning + * SystemProperty, and config_tether_apndata to decide whether DUN APN is required for + * tethering. + * + * @return 0: Not required. 1: required. 2: Not set. + */ + int getTetherApnRequired(); + + /** * Set the preferred network type. * Used for device configuration by some CDMA operators. * |