Loading api/system-current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -7713,7 +7713,9 @@ package android.provider { public static final class Telephony.Carriers implements android.provider.BaseColumns { field public static final String APN_SET_ID = "apn_set_id"; field public static final int CARRIER_EDITED = 4; // 0x4 field @NonNull public static final android.net.Uri DPC_URI; field public static final String EDITED_STATUS = "edited"; field public static final int INVALID_APN_ID = -1; // 0xffffffff field public static final String MAX_CONNECTIONS = "max_conns"; field public static final String MODEM_PERSIST = "modem_cognitive"; field public static final String MTU = "mtu"; Loading Loading @@ -9988,6 +9990,7 @@ package android.telephony { } public class TelephonyManager { method public int addDevicePolicyOverrideApn(@NonNull android.content.Context, @NonNull android.telephony.data.ApnSetting); method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void call(String, String); method public int checkCarrierPrivilegesForPackage(String); method public int checkCarrierPrivilegesForPackageAnyPhone(String); Loading Loading @@ -10016,6 +10019,7 @@ package android.telephony { method @Deprecated public boolean getDataEnabled(int); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @NonNull public static String getDefaultSimCountryIso(); method @NonNull public java.util.List<android.telephony.data.ApnSetting> getDevicePolicyOverrideApns(@NonNull android.content.Context); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDeviceSoftwareVersion(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode(); method public int getEmergencyNumberDbVersion(); Loading Loading @@ -10062,6 +10066,7 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isTetheringApnRequired(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled(); method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle); method public boolean modifyDevicePolicyOverrideApn(@NonNull android.content.Context, int, @NonNull android.telephony.data.ApnSetting); method public boolean needsOtaServiceProvisioning(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyOtaEmergencyNumberDbInstalled(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio(); api/test-current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -3249,14 +3249,17 @@ package android.telephony { } public class TelephonyManager { method public int addDevicePolicyOverrideApn(@NonNull android.content.Context, @NonNull android.telephony.data.ApnSetting); method public int checkCarrierPrivilegesForPackage(String); method public int getCarrierIdListVersion(); method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @NonNull public java.util.List<android.telephony.data.ApnSetting> getDevicePolicyOverrideApns(@NonNull android.content.Context); method public int getEmergencyNumberDbVersion(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag(); method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getNetworkCountryIso(int); method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion(); method public boolean modifyDevicePolicyOverrideApn(@NonNull android.content.Context, int, @NonNull android.telephony.data.ApnSetting); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile(); method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String); method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String); Loading core/java/android/provider/Telephony.java +9 −1 Original line number Diff line number Diff line Loading @@ -3559,7 +3559,8 @@ public final class Telephony { * can manage DPC-owned APNs. * @hide */ public static final Uri DPC_URI = Uri.parse("content://telephony/carriers/dpc"); @SystemApi public static final @NonNull Uri DPC_URI = Uri.parse("content://telephony/carriers/dpc"); /** * The {@code content://} style URL to be called from Telephony to query APNs. Loading Loading @@ -3867,6 +3868,13 @@ public final class Telephony { @SystemApi public static final String USER_EDITABLE = "user_editable"; /** * Integer value denoting an invalid APN id * @hide */ @SystemApi public static final int INVALID_APN_ID = -1; /** * {@link #EDITED_STATUS APN edit status} indicates that this APN has not been edited or * fails to edit. Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +22 −31 Original line number Diff line number Diff line Loading @@ -215,6 +215,7 @@ import android.provider.ContactsContract.QuickContact; import android.provider.ContactsInternal; import android.provider.Settings; import android.provider.Settings.Global; import android.provider.Telephony; import android.security.IKeyChainAliasCallback; import android.security.IKeyChainService; import android.security.KeyChain; Loading Loading @@ -14113,18 +14114,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Objects.requireNonNull(apnSetting, "ApnSetting is null in addOverrideApn"); enforceDeviceOwner(who); int operatedId = -1; Uri resultUri = mInjector.binderWithCleanCallingIdentity(() -> mContext.getContentResolver().insert(DPC_URI, apnSetting.toContentValues())); if (resultUri != null) { try { operatedId = Integer.parseInt(resultUri.getLastPathSegment()); } catch (NumberFormatException e) { Slog.e(LOG_TAG, "Failed to parse inserted override APN id.", e); } TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); if (tm != null) { return mInjector.binderWithCleanCallingIdentity( () -> tm.addDevicePolicyOverrideApn(mContext, apnSetting)); } else { Log.w(LOG_TAG, "TelephonyManager is null when trying to add override apn"); return Telephony.Carriers.INVALID_APN_ID; } return operatedId; } @Override Loading @@ -14140,10 +14137,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (apnId < 0) { return false; } return mInjector.binderWithCleanCallingIdentity(() -> mContext.getContentResolver().update( Uri.withAppendedPath(DPC_URI, Integer.toString(apnId)), apnSetting.toContentValues(), null, null) > 0); TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); if (tm != null) { return mInjector.binderWithCleanCallingIdentity( () -> tm.modifyDevicePolicyOverrideApn(mContext, apnId, apnSetting)); } else { Log.w(LOG_TAG, "TelephonyManager is null when trying to modify override apn"); return false; } } @Override Loading Loading @@ -14179,23 +14180,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } private List<ApnSetting> getOverrideApnsUnchecked() { final Cursor cursor = mInjector.binderWithCleanCallingIdentity( () -> mContext.getContentResolver().query(DPC_URI, null, null, null, null)); if (cursor == null) { return Collections.emptyList(); } try { List<ApnSetting> apnList = new ArrayList<ApnSetting>(); cursor.moveToPosition(-1); while (cursor.moveToNext()) { ApnSetting apn = ApnSetting.makeApnSetting(cursor); apnList.add(apn); } return apnList; } finally { cursor.close(); TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); if (tm != null) { return mInjector.binderWithCleanCallingIdentity( () -> tm.getDevicePolicyOverrideApns(mContext)); } Log.w(LOG_TAG, "TelephonyManager is null when trying to get override apns"); return Collections.emptyList(); } @Override services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java +2 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ public class DpmMockContext extends MockContext { return mMockSystemServices.wifiManager; case Context.ACCOUNT_SERVICE: return mMockSystemServices.accountManager; case Context.TELEPHONY_SERVICE: return mMockSystemServices.telephonyManager; } throw new UnsupportedOperationException(); } Loading Loading
api/system-current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -7713,7 +7713,9 @@ package android.provider { public static final class Telephony.Carriers implements android.provider.BaseColumns { field public static final String APN_SET_ID = "apn_set_id"; field public static final int CARRIER_EDITED = 4; // 0x4 field @NonNull public static final android.net.Uri DPC_URI; field public static final String EDITED_STATUS = "edited"; field public static final int INVALID_APN_ID = -1; // 0xffffffff field public static final String MAX_CONNECTIONS = "max_conns"; field public static final String MODEM_PERSIST = "modem_cognitive"; field public static final String MTU = "mtu"; Loading Loading @@ -9988,6 +9990,7 @@ package android.telephony { } public class TelephonyManager { method public int addDevicePolicyOverrideApn(@NonNull android.content.Context, @NonNull android.telephony.data.ApnSetting); method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void call(String, String); method public int checkCarrierPrivilegesForPackage(String); method public int checkCarrierPrivilegesForPackageAnyPhone(String); Loading Loading @@ -10016,6 +10019,7 @@ package android.telephony { method @Deprecated public boolean getDataEnabled(int); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @NonNull public static String getDefaultSimCountryIso(); method @NonNull public java.util.List<android.telephony.data.ApnSetting> getDevicePolicyOverrideApns(@NonNull android.content.Context); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDeviceSoftwareVersion(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode(); method public int getEmergencyNumberDbVersion(); Loading Loading @@ -10062,6 +10066,7 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isTetheringApnRequired(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled(); method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle); method public boolean modifyDevicePolicyOverrideApn(@NonNull android.content.Context, int, @NonNull android.telephony.data.ApnSetting); method public boolean needsOtaServiceProvisioning(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyOtaEmergencyNumberDbInstalled(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio();
api/test-current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -3249,14 +3249,17 @@ package android.telephony { } public class TelephonyManager { method public int addDevicePolicyOverrideApn(@NonNull android.content.Context, @NonNull android.telephony.data.ApnSetting); method public int checkCarrierPrivilegesForPackage(String); method public int getCarrierIdListVersion(); method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @NonNull public java.util.List<android.telephony.data.ApnSetting> getDevicePolicyOverrideApns(@NonNull android.content.Context); method public int getEmergencyNumberDbVersion(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag(); method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getNetworkCountryIso(int); method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion(); method public boolean modifyDevicePolicyOverrideApn(@NonNull android.content.Context, int, @NonNull android.telephony.data.ApnSetting); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile(); method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String); method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String); Loading
core/java/android/provider/Telephony.java +9 −1 Original line number Diff line number Diff line Loading @@ -3559,7 +3559,8 @@ public final class Telephony { * can manage DPC-owned APNs. * @hide */ public static final Uri DPC_URI = Uri.parse("content://telephony/carriers/dpc"); @SystemApi public static final @NonNull Uri DPC_URI = Uri.parse("content://telephony/carriers/dpc"); /** * The {@code content://} style URL to be called from Telephony to query APNs. Loading Loading @@ -3867,6 +3868,13 @@ public final class Telephony { @SystemApi public static final String USER_EDITABLE = "user_editable"; /** * Integer value denoting an invalid APN id * @hide */ @SystemApi public static final int INVALID_APN_ID = -1; /** * {@link #EDITED_STATUS APN edit status} indicates that this APN has not been edited or * fails to edit. Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +22 −31 Original line number Diff line number Diff line Loading @@ -215,6 +215,7 @@ import android.provider.ContactsContract.QuickContact; import android.provider.ContactsInternal; import android.provider.Settings; import android.provider.Settings.Global; import android.provider.Telephony; import android.security.IKeyChainAliasCallback; import android.security.IKeyChainService; import android.security.KeyChain; Loading Loading @@ -14113,18 +14114,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Objects.requireNonNull(apnSetting, "ApnSetting is null in addOverrideApn"); enforceDeviceOwner(who); int operatedId = -1; Uri resultUri = mInjector.binderWithCleanCallingIdentity(() -> mContext.getContentResolver().insert(DPC_URI, apnSetting.toContentValues())); if (resultUri != null) { try { operatedId = Integer.parseInt(resultUri.getLastPathSegment()); } catch (NumberFormatException e) { Slog.e(LOG_TAG, "Failed to parse inserted override APN id.", e); } TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); if (tm != null) { return mInjector.binderWithCleanCallingIdentity( () -> tm.addDevicePolicyOverrideApn(mContext, apnSetting)); } else { Log.w(LOG_TAG, "TelephonyManager is null when trying to add override apn"); return Telephony.Carriers.INVALID_APN_ID; } return operatedId; } @Override Loading @@ -14140,10 +14137,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (apnId < 0) { return false; } return mInjector.binderWithCleanCallingIdentity(() -> mContext.getContentResolver().update( Uri.withAppendedPath(DPC_URI, Integer.toString(apnId)), apnSetting.toContentValues(), null, null) > 0); TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); if (tm != null) { return mInjector.binderWithCleanCallingIdentity( () -> tm.modifyDevicePolicyOverrideApn(mContext, apnId, apnSetting)); } else { Log.w(LOG_TAG, "TelephonyManager is null when trying to modify override apn"); return false; } } @Override Loading Loading @@ -14179,23 +14180,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } private List<ApnSetting> getOverrideApnsUnchecked() { final Cursor cursor = mInjector.binderWithCleanCallingIdentity( () -> mContext.getContentResolver().query(DPC_URI, null, null, null, null)); if (cursor == null) { return Collections.emptyList(); } try { List<ApnSetting> apnList = new ArrayList<ApnSetting>(); cursor.moveToPosition(-1); while (cursor.moveToNext()) { ApnSetting apn = ApnSetting.makeApnSetting(cursor); apnList.add(apn); } return apnList; } finally { cursor.close(); TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); if (tm != null) { return mInjector.binderWithCleanCallingIdentity( () -> tm.getDevicePolicyOverrideApns(mContext)); } Log.w(LOG_TAG, "TelephonyManager is null when trying to get override apns"); return Collections.emptyList(); } @Override
services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java +2 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ public class DpmMockContext extends MockContext { return mMockSystemServices.wifiManager; case Context.ACCOUNT_SERVICE: return mMockSystemServices.accountManager; case Context.TELEPHONY_SERVICE: return mMockSystemServices.telephonyManager; } throw new UnsupportedOperationException(); } Loading