Use string for CREATE_APP_SPECIFIC_NETWORK permission

This allows using the permission in 25Q4 before it becomes a
public API in 26Q2.

Flag: android.net.platform.flags.create_app_specific_network_permission
Test: TH
Bug: 435313135
Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:60f7743f773b05a98e651c953631e93957291bf5
Merged-In: I8d336a588eddf9a027079e208b2b96bb6c163e86
Change-Id: I8d336a588eddf9a027079e208b2b96bb6c163e86
This commit is contained in:
Motomu Utsumi 2025-09-13 09:29:44 +09:00 • committed by Android Build Coastguard Worker
commit c4fea9d31c
3 changed files with 16 additions and 4 deletions

View file

@ -3967,6 +3967,10 @@ public class ConnectivityManager {
} }
} }
// TODO: Use android.Manifest.permission.CREATE_APP_SPECIFIC_NETWORK once it's available.
private static final String PERMISSION_CREATE_APP_SPECIFIC_NETWORK =
"android.permission.CREATE_APP_SPECIFIC_NETWORK";
/** /**
* @hide * @hide
* Register a NetworkAgent with ConnectivityService. * Register a NetworkAgent with ConnectivityService.
@ -3975,7 +3979,7 @@ public class ConnectivityManager {
@RequiresPermission(anyOf = { @RequiresPermission(anyOf = {
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
android.Manifest.permission.NETWORK_FACTORY, android.Manifest.permission.NETWORK_FACTORY,
android.Manifest.permission.CREATE_APP_SPECIFIC_NETWORK}) PERMISSION_CREATE_APP_SPECIFIC_NETWORK})
public NetworkAndAgentRegistryParcelable registerNetworkAgent( public NetworkAndAgentRegistryParcelable registerNetworkAgent(
@NonNull INetworkAgent na, @NonNull NetworkInfo ni, @NonNull INetworkAgent na, @NonNull NetworkInfo ni,
@NonNull LinkProperties lp, @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp, @NonNull NetworkCapabilities nc,
@ -3992,7 +3996,7 @@ public class ConnectivityManager {
@RequiresPermission(anyOf = { @RequiresPermission(anyOf = {
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
android.Manifest.permission.NETWORK_FACTORY, android.Manifest.permission.NETWORK_FACTORY,
android.Manifest.permission.CREATE_APP_SPECIFIC_NETWORK}) PERMISSION_CREATE_APP_SPECIFIC_NETWORK})
public NetworkAndAgentRegistryParcelable registerNetworkAgent( public NetworkAndAgentRegistryParcelable registerNetworkAgent(
@NonNull INetworkAgent na, @NonNull NetworkInfo ni, @NonNull INetworkAgent na, @NonNull NetworkInfo ni,
@NonNull LinkProperties lp, @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp, @NonNull NetworkCapabilities nc,

View file

@ -531,6 +531,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
// CONNECTIVITY_ACTION broadcast. // CONNECTIVITY_ACTION broadcast.
private static final char DELIVERY_GROUP_KEY_DELIMITER = ';'; private static final char DELIVERY_GROUP_KEY_DELIMITER = ';';
// TODO: Use android.Manifest.permission.CREATE_APP_SPECIFIC_NETWORK once it's available.
private static final String PERMISSION_CREATE_APP_SPECIFIC_NETWORK =
"android.permission.CREATE_APP_SPECIFIC_NETWORK";
// The maximum value for the blocking validation result, in milliseconds. // The maximum value for the blocking validation result, in milliseconds.
public static final int MAX_VALIDATION_IGNORE_AFTER_ROAM_TIME_MS = 10000; public static final int MAX_VALIDATION_IGNORE_AFTER_ROAM_TIME_MS = 10000;
@ -4144,7 +4148,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// The CREATE_APP_SPECIFIC_NETWORK permission was introduced in 25Q4. // The CREATE_APP_SPECIFIC_NETWORK permission was introduced in 25Q4.
// It must not be granted on earlier platform versions, even if an app declares it. // It must not be granted on earlier platform versions, even if an app declares it.
return mDeps.isAtLeast25Q4() && hasAnyPermissionOf(mContext, return mDeps.isAtLeast25Q4() && hasAnyPermissionOf(mContext,
android.Manifest.permission.CREATE_APP_SPECIFIC_NETWORK); PERMISSION_CREATE_APP_SPECIFIC_NETWORK);
} }
private boolean hasNetworkFactoryPermission() { private boolean hasNetworkFactoryPermission() {

View file

@ -32,6 +32,10 @@ import com.android.testutils.TestableNetworkCallback.Event.CapabilitiesChanged
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
// TODO: Use android.Manifest.permission.CREATE_APP_SPECIFIC_NETWORK once it's available.
private const val PERMISSION_CREATE_APP_SPECIFIC_NETWORK =
"android.permission.CREATE_APP_SPECIFIC_NETWORK"
@RunWith(DevSdkIgnoreRunner::class) @RunWith(DevSdkIgnoreRunner::class)
@IgnoreUpTo(Build.VERSION_CODES.R) @IgnoreUpTo(Build.VERSION_CODES.R)
class CSCreateAppSpecificNetworkPermissionTest : CSTest() { class CSCreateAppSpecificNetworkPermissionTest : CSTest() {
@ -47,7 +51,7 @@ class CSCreateAppSpecificNetworkPermissionTest : CSTest() {
PERMISSION_DENIED PERMISSION_DENIED
) )
context.setPermission( context.setPermission(
android.Manifest.permission.CREATE_APP_SPECIFIC_NETWORK, PERMISSION_CREATE_APP_SPECIFIC_NETWORK,
PERMISSION_GRANTED PERMISSION_GRANTED
) )