diff --git a/api/src/main/java/io/grpc/Grpc.java b/api/src/main/java/io/grpc/Grpc.java
index baa9f5f0ab6..280eeaec825 100644
--- a/api/src/main/java/io/grpc/Grpc.java
+++ b/api/src/main/java/io/grpc/Grpc.java
@@ -101,6 +101,15 @@ public static ManagedChannelBuilder<?> newChannelBuilder(
     return ManagedChannelRegistry.getDefaultRegistry().newChannelBuilder(target, creds);
   }
 
+  /**
+   * Creates a channel builder with a target string, credentials and nameResolverRegistry.
+   */
+  public static ManagedChannelBuilder<?> newChannelBuilder(String target,
+      ChannelCredentials creds, NameResolverRegistry nameResolverRegistry) {
+    return ManagedChannelRegistry.getDefaultRegistry().newChannelBuilder(nameResolverRegistry,
+      target, creds);
+  }
+
   /**
    * Creates a channel builder from a host, port, and credentials. The host and port are combined to
    * form an authority string and then passed to {@link #newChannelBuilder(String,
diff --git a/api/src/main/java/io/grpc/ManagedChannelRegistry.java b/api/src/main/java/io/grpc/ManagedChannelRegistry.java
index aed5eca9abf..285d87b1e29 100644
--- a/api/src/main/java/io/grpc/ManagedChannelRegistry.java
+++ b/api/src/main/java/io/grpc/ManagedChannelRegistry.java
@@ -155,7 +155,6 @@ ManagedChannelBuilder<?> newChannelBuilder(String target, ChannelCredentials cre
     return newChannelBuilder(NameResolverRegistry.getDefaultRegistry(), target, creds);
   }
 
-  @VisibleForTesting
   ManagedChannelBuilder<?> newChannelBuilder(NameResolverRegistry nameResolverRegistry,
       String target, ChannelCredentials creds) {
     NameResolverProvider nameResolverProvider = null;
diff --git a/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java b/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
index e0c3d5a8525..8ac42d2c851 100644
--- a/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
+++ b/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
@@ -28,7 +28,9 @@
 import io.grpc.ManagedChannelProvider;
 import io.grpc.ManagedChannelProvider.NewChannelBuilderResult;
 import io.grpc.ManagedChannelRegistryAccessor;
+import io.grpc.NameResolverRegistry;
 import io.grpc.TlsChannelCredentials;
+import io.grpc.internal.testing.FakeNameResolverProvider;
 import io.grpc.stub.StreamObserver;
 import io.grpc.testing.GrpcCleanupRule;
 import io.grpc.testing.protobuf.SimpleRequest;
@@ -120,6 +122,24 @@ public void managedChannelRegistry_newChannelBuilder() {
     channel.shutdownNow();
   }
 
+  @Test
+  public void managedChannelRegistry_newChannelBuilderForNameResolverRegistry() {
+    Assume.assumeTrue(Utils.isEpollAvailable());
+    NameResolverRegistry nameResolverRegistry = new NameResolverRegistry();
+    DomainSocketAddress socketAddress = new DomainSocketAddress("test-server");
+    FakeNameResolverProvider fakeNameResolverProvider = new FakeNameResolverProvider(
+            "unix:///sock.sock", socketAddress);
+    nameResolverRegistry.register(fakeNameResolverProvider);
+    ManagedChannelBuilder<?> managedChannelBuilder
+            = Grpc.newChannelBuilder("unix:///sock.sock",
+            InsecureChannelCredentials.create(), nameResolverRegistry);
+    assertThat(managedChannelBuilder).isNotNull();
+    ManagedChannel channel = managedChannelBuilder.build();
+    assertThat(channel).isNotNull();
+    assertThat(channel.authority()).isEqualTo("/sock.sock");
+    channel.shutdownNow();
+  }
+
   @Test
   public void udsClientServerTestUsingProvider() throws IOException {
     Assume.assumeTrue(Utils.isEpollAvailable());