diff --git a/core/java/android/net/INetworkScoreService.aidl b/core/java/android/net/INetworkScoreService.aidl
index 9cc256ec65108..f249daf876267 100644
--- a/core/java/android/net/INetworkScoreService.aidl
+++ b/core/java/android/net/INetworkScoreService.aidl
@@ -132,5 +132,14 @@ interface INetworkScoreService
oneway void requestRecommendationAsync(in RecommendationRequest request,
in RemoteCallback remoteCallback);
+ /**
+ * Returns metadata about the active scorer or null if there is no active scorer.
+ */
NetworkScorerAppManager.NetworkScorerAppData getActiveScorer();
+
+ /**
+ * Returns the list of available scorer apps. The list will be empty if there are
+ * no valid scorers.
+ */
+ List getAllValidScorers();
}
diff --git a/core/java/android/net/NetworkScoreManager.java b/core/java/android/net/NetworkScoreManager.java
index 2875580971aef..8f3af6624996e 100644
--- a/core/java/android/net/NetworkScoreManager.java
+++ b/core/java/android/net/NetworkScoreManager.java
@@ -37,6 +37,7 @@ import com.android.internal.util.Preconditions;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.List;
import java.util.concurrent.CompletableFuture;
/**
@@ -199,6 +200,20 @@ public class NetworkScoreManager {
}
}
+ /**
+ * Returns the list of available scorer apps. The list will be empty if there are
+ * no valid scorers.
+ *
+ * @hide
+ */
+ public List getAllValidScorers() {
+ try {
+ return mService.getAllValidScorers();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
/**
* Update network scores.
*
diff --git a/core/java/android/net/NetworkScorerAppManager.java b/core/java/android/net/NetworkScorerAppManager.java
index f3cbb52e500d6..a166c7ffffe7a 100644
--- a/core/java/android/net/NetworkScorerAppManager.java
+++ b/core/java/android/net/NetworkScorerAppManager.java
@@ -126,6 +126,14 @@ public class NetworkScorerAppManager {
}
}
+ /**
+ * Returns the list of available scorer apps. The list will be empty if there are
+ * no valid scorers.
+ */
+ public List getAllValidScorers() {
+ return Collections.emptyList();
+ }
+
/**
* @return A {@link NetworkScorerAppData} instance containing information about the
* best configured network recommendation provider installed or {@code null}
diff --git a/services/core/java/com/android/server/NetworkScoreService.java b/services/core/java/com/android/server/NetworkScoreService.java
index 0ac51b90249ed..f9b5db6c0b0ed 100644
--- a/services/core/java/com/android/server/NetworkScoreService.java
+++ b/services/core/java/com/android/server/NetworkScoreService.java
@@ -718,6 +718,15 @@ public class NetworkScoreService extends INetworkScoreService.Stub {
return null;
}
+ /**
+ * Returns the list of available scorer apps. The list will be empty if there are
+ * no valid scorers.
+ */
+ @Override
+ public List getAllValidScorers() {
+ return mNetworkScorerAppManager.getAllValidScorers();
+ }
+
@Override
public void disableScoring() {
// Only the active scorer or the system should be allowed to disable scoring.