Loading api/system-current.txt +2 −1 Original line number Diff line number Diff line Loading @@ -9161,7 +9161,8 @@ package android.provider { } public final class Settings { method public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, boolean); method @Deprecated public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, boolean); method public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, @Nullable String, boolean); field public static final String ACTION_ACCESSIBILITY_DETAILS_SETTINGS = "android.settings.ACCESSIBILITY_DETAILS_SETTINGS"; field public static final String ACTION_BUGREPORT_HANDLER_SETTINGS = "android.settings.BUGREPORT_HANDLER_SETTINGS"; field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS"; core/java/android/app/IActivityManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -345,6 +345,8 @@ interface IActivityManager { boolean isIntentSenderTargetedToPackage(in IIntentSender sender); @UnsupportedAppUsage void updatePersistentConfiguration(in Configuration values); void updatePersistentConfigurationWithAttribution(in Configuration values, String callingPackageName, String callingAttributionTag); @UnsupportedAppUsage long[] getProcessPss(in int[] pids); void showBootMessage(in CharSequence msg, boolean always); Loading core/java/android/bluetooth/BluetoothPan.java +1 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,7 @@ public final class BluetoothPan implements BluetoothProfile { final IBluetoothPan service = getService(); if (service != null && isEnabled()) { try { service.setBluetoothTethering(value, pkgName); service.setBluetoothTethering(value, pkgName, mContext.getAttributionTag()); } catch (RemoteException e) { Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable())); } Loading core/java/android/net/ConnectivityManager.java +50 −9 Original line number Diff line number Diff line Loading @@ -2043,12 +2043,21 @@ public class ConnectivityManager { public boolean requestRouteToHostAddress(int networkType, InetAddress hostAddress) { checkLegacyRoutingApiAccess(); try { return mService.requestRouteToHostAddress(networkType, hostAddress.getAddress()); return mService.requestRouteToHostAddress(networkType, hostAddress.getAddress(), mContext.getOpPackageName(), getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * @return the context's attribution tag */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private @Nullable String getAttributionTag() { return mContext.getAttributionTag(); } /** * Returns the value of the setting for background data usage. If false, * applications should not use the network if the application is not in the Loading Loading @@ -2239,14 +2248,30 @@ public class ConnectivityManager { * services.jar, possibly in com.android.server.net. */ /** {@hide} */ public static final void enforceChangePermission(Context context) { public static final void enforceChangePermission(Context context, String callingPkg, String callingAttributionTag) { int uid = Binder.getCallingUid(); Settings.checkAndNoteChangeNetworkStateOperation(context, uid, Settings .getPackageNameForUid(context, uid), true /* throwException */); checkAndNoteChangeNetworkStateOperation(context, uid, callingPkg, callingAttributionTag, true /* throwException */); } /** * Check if the package is a allowed to change the network state. This also accounts that such * an access happened. * * @return {@code true} iff the package is allowed to change the network state. */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private static boolean checkAndNoteChangeNetworkStateOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { return Settings.checkAndNoteChangeNetworkStateOperation(context, uid, callingPackage, callingAttributionTag, throwException); } /** {@hide} */ public static final void enforceTetherChangePermission(Context context, String callingPkg) { public static final void enforceTetherChangePermission(Context context, String callingPkg, String callingAttributionTag) { Preconditions.checkNotNull(context, "Context cannot be null"); Preconditions.checkNotNull(callingPkg, "callingPkg cannot be null"); Loading @@ -2260,11 +2285,25 @@ public class ConnectivityManager { int uid = Binder.getCallingUid(); // If callingPkg's uid is not same as Binder.getCallingUid(), // AppOpsService throws SecurityException. Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPkg, true /* throwException */); checkAndNoteWriteSettingsOperation(context, uid, callingPkg, callingAttributionTag, true /* throwException */); } } /** * Check if the package is a allowed to write settings. This also accounts that such an access * happened. * * @return {@code true} iff the package is allowed to write settings. */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private static boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { return Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPackage, callingAttributionTag, throwException); } /** * @deprecated - use getSystemService. This is a kludge to support static access in certain * situations where a Context pointer is unavailable. Loading Loading @@ -3705,7 +3744,8 @@ public class ConnectivityManager { need, messenger, binder, callingPackageName); } else { request = mService.requestNetwork( need, messenger, timeoutMs, binder, legacyType, callingPackageName); need, messenger, timeoutMs, binder, legacyType, callingPackageName, getAttributionTag()); } if (request != null) { sCallbacks.put(request, callback); Loading Loading @@ -3981,7 +4021,8 @@ public class ConnectivityManager { checkPendingIntentNotNull(operation); try { mService.pendingRequestForNetwork( request.networkCapabilities, operation, mContext.getOpPackageName()); request.networkCapabilities, operation, mContext.getOpPackageName(), getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } catch (ServiceSpecificException e) { Loading core/java/android/net/IConnectivityManager.aidl +4 −3 Original line number Diff line number Diff line Loading @@ -77,7 +77,8 @@ interface IConnectivityManager NetworkQuotaInfo getActiveNetworkQuotaInfo(); boolean isActiveNetworkMetered(); boolean requestRouteToHostAddress(int networkType, in byte[] hostAddress); boolean requestRouteToHostAddress(int networkType, in byte[] hostAddress, String callingPackageName, String callingAttributionTag); @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code TetheringManager#getLastTetherError} as alternative") Loading Loading @@ -168,10 +169,10 @@ interface IConnectivityManager NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities, in Messenger messenger, int timeoutSec, in IBinder binder, int legacy, String callingPackageName); String callingPackageName, String callingAttributionTag); NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation, String callingPackageName); in PendingIntent operation, String callingPackageName, String callingAttributionTag); void releasePendingNetworkRequest(in PendingIntent operation); Loading Loading
api/system-current.txt +2 −1 Original line number Diff line number Diff line Loading @@ -9161,7 +9161,8 @@ package android.provider { } public final class Settings { method public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, boolean); method @Deprecated public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, boolean); method public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, @Nullable String, boolean); field public static final String ACTION_ACCESSIBILITY_DETAILS_SETTINGS = "android.settings.ACCESSIBILITY_DETAILS_SETTINGS"; field public static final String ACTION_BUGREPORT_HANDLER_SETTINGS = "android.settings.BUGREPORT_HANDLER_SETTINGS"; field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
core/java/android/app/IActivityManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -345,6 +345,8 @@ interface IActivityManager { boolean isIntentSenderTargetedToPackage(in IIntentSender sender); @UnsupportedAppUsage void updatePersistentConfiguration(in Configuration values); void updatePersistentConfigurationWithAttribution(in Configuration values, String callingPackageName, String callingAttributionTag); @UnsupportedAppUsage long[] getProcessPss(in int[] pids); void showBootMessage(in CharSequence msg, boolean always); Loading
core/java/android/bluetooth/BluetoothPan.java +1 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,7 @@ public final class BluetoothPan implements BluetoothProfile { final IBluetoothPan service = getService(); if (service != null && isEnabled()) { try { service.setBluetoothTethering(value, pkgName); service.setBluetoothTethering(value, pkgName, mContext.getAttributionTag()); } catch (RemoteException e) { Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable())); } Loading
core/java/android/net/ConnectivityManager.java +50 −9 Original line number Diff line number Diff line Loading @@ -2043,12 +2043,21 @@ public class ConnectivityManager { public boolean requestRouteToHostAddress(int networkType, InetAddress hostAddress) { checkLegacyRoutingApiAccess(); try { return mService.requestRouteToHostAddress(networkType, hostAddress.getAddress()); return mService.requestRouteToHostAddress(networkType, hostAddress.getAddress(), mContext.getOpPackageName(), getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * @return the context's attribution tag */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private @Nullable String getAttributionTag() { return mContext.getAttributionTag(); } /** * Returns the value of the setting for background data usage. If false, * applications should not use the network if the application is not in the Loading Loading @@ -2239,14 +2248,30 @@ public class ConnectivityManager { * services.jar, possibly in com.android.server.net. */ /** {@hide} */ public static final void enforceChangePermission(Context context) { public static final void enforceChangePermission(Context context, String callingPkg, String callingAttributionTag) { int uid = Binder.getCallingUid(); Settings.checkAndNoteChangeNetworkStateOperation(context, uid, Settings .getPackageNameForUid(context, uid), true /* throwException */); checkAndNoteChangeNetworkStateOperation(context, uid, callingPkg, callingAttributionTag, true /* throwException */); } /** * Check if the package is a allowed to change the network state. This also accounts that such * an access happened. * * @return {@code true} iff the package is allowed to change the network state. */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private static boolean checkAndNoteChangeNetworkStateOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { return Settings.checkAndNoteChangeNetworkStateOperation(context, uid, callingPackage, callingAttributionTag, throwException); } /** {@hide} */ public static final void enforceTetherChangePermission(Context context, String callingPkg) { public static final void enforceTetherChangePermission(Context context, String callingPkg, String callingAttributionTag) { Preconditions.checkNotNull(context, "Context cannot be null"); Preconditions.checkNotNull(callingPkg, "callingPkg cannot be null"); Loading @@ -2260,11 +2285,25 @@ public class ConnectivityManager { int uid = Binder.getCallingUid(); // If callingPkg's uid is not same as Binder.getCallingUid(), // AppOpsService throws SecurityException. Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPkg, true /* throwException */); checkAndNoteWriteSettingsOperation(context, uid, callingPkg, callingAttributionTag, true /* throwException */); } } /** * Check if the package is a allowed to write settings. This also accounts that such an access * happened. * * @return {@code true} iff the package is allowed to write settings. */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private static boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { return Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPackage, callingAttributionTag, throwException); } /** * @deprecated - use getSystemService. This is a kludge to support static access in certain * situations where a Context pointer is unavailable. Loading Loading @@ -3705,7 +3744,8 @@ public class ConnectivityManager { need, messenger, binder, callingPackageName); } else { request = mService.requestNetwork( need, messenger, timeoutMs, binder, legacyType, callingPackageName); need, messenger, timeoutMs, binder, legacyType, callingPackageName, getAttributionTag()); } if (request != null) { sCallbacks.put(request, callback); Loading Loading @@ -3981,7 +4021,8 @@ public class ConnectivityManager { checkPendingIntentNotNull(operation); try { mService.pendingRequestForNetwork( request.networkCapabilities, operation, mContext.getOpPackageName()); request.networkCapabilities, operation, mContext.getOpPackageName(), getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } catch (ServiceSpecificException e) { Loading
core/java/android/net/IConnectivityManager.aidl +4 −3 Original line number Diff line number Diff line Loading @@ -77,7 +77,8 @@ interface IConnectivityManager NetworkQuotaInfo getActiveNetworkQuotaInfo(); boolean isActiveNetworkMetered(); boolean requestRouteToHostAddress(int networkType, in byte[] hostAddress); boolean requestRouteToHostAddress(int networkType, in byte[] hostAddress, String callingPackageName, String callingAttributionTag); @UnsupportedAppUsage(maxTargetSdk = 29, publicAlternatives = "Use {@code TetheringManager#getLastTetherError} as alternative") Loading Loading @@ -168,10 +169,10 @@ interface IConnectivityManager NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities, in Messenger messenger, int timeoutSec, in IBinder binder, int legacy, String callingPackageName); String callingPackageName, String callingAttributionTag); NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation, String callingPackageName); in PendingIntent operation, String callingPackageName, String callingAttributionTag); void releasePendingNetworkRequest(in PendingIntent operation); Loading