summaryrefslogtreecommitdiff
path: root/Settings/src/com/android/tv/settings/enterprise/apps/ApplicationFeatureProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'Settings/src/com/android/tv/settings/enterprise/apps/ApplicationFeatureProvider.java')
-rw-r--r--Settings/src/com/android/tv/settings/enterprise/apps/ApplicationFeatureProvider.java103
1 files changed, 103 insertions, 0 deletions
diff --git a/Settings/src/com/android/tv/settings/enterprise/apps/ApplicationFeatureProvider.java b/Settings/src/com/android/tv/settings/enterprise/apps/ApplicationFeatureProvider.java
new file mode 100644
index 000000000..978028c95
--- /dev/null
+++ b/Settings/src/com/android/tv/settings/enterprise/apps/ApplicationFeatureProvider.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tv.settings.enterprise.apps;
+
+import android.annotation.UserIdInt;
+import android.content.Intent;
+
+import java.util.List;
+
+/**
+ * Forked from:
+ * Settings/src/com/android/settings/applications/ApplicationFeatureProvider.java
+ */
+public interface ApplicationFeatureProvider {
+
+ /**
+ * Calculates the total number of apps installed on the device via policy in the current user
+ * and all its managed profiles.
+ *
+ * @param async Whether to count asynchronously in a background thread
+ * @param callback The callback to invoke with the result
+ */
+ void calculateNumberOfPolicyInstalledApps(boolean async, NumberOfAppsCallback callback);
+
+ /**
+ * Asynchronously builds the list of apps installed on the device via policy in the current user
+ * and all its managed profiles.
+ *
+ * @param callback The callback to invoke with the result
+ */
+ void listPolicyInstalledApps(ListOfAppsCallback callback);
+
+ /**
+ * Asynchronously calculates the total number of apps installed in the current user and all its
+ * managed profiles that have been granted one or more of the given permissions by the admin.
+ *
+ * @param permissions Only consider apps that have been granted one or more of these
+ * permissions by the admin, either at run-time or install-time
+ * @param async Whether to count asynchronously in a background thread
+ * @param callback The callback to invoke with the result
+ */
+ void calculateNumberOfAppsWithAdminGrantedPermissions(String[] permissions, boolean async,
+ NumberOfAppsCallback callback);
+
+ /**
+ * Asynchronously builds the list of apps installed in the current user and all its
+ * managed profiles that have been granted one or more of the given permissions by the admin.
+ *
+ * @param permissions Only consider apps that have been granted one or more of these
+ * permissions by the admin, either at run-time or install-time
+ * @param callback The callback to invoke with the result
+ */
+ void listAppsWithAdminGrantedPermissions(String[] permissions, ListOfAppsCallback callback);
+
+ /**
+ * Return the persistent preferred activities configured by the admin for the given user.
+ * A persistent preferred activity is an activity that the admin configured to always handle a
+ * given intent (e.g. open browser), even if the user has other apps installed that would also
+ * be able to handle the intent.
+ *
+ * @param userId ID of the user for which to find persistent preferred activities
+ * @param intents The intents for which to find persistent preferred activities
+ * @return the persistent preferred activities for the given intents, ordered first by user id,
+ * then by package name
+ */
+ List<UserAppInfo> findPersistentPreferredActivities(@UserIdInt int userId, Intent[] intents);
+
+ /**
+ * Returns a user readable text explaining how much time user has spent in an app at a
+ * pre-specified duration.
+ */
+ default CharSequence getTimeSpentInApp(String packageName) {
+ return null;
+ }
+
+ /**
+ * Callback that receives the number of packages installed on the device.
+ */
+ interface NumberOfAppsCallback {
+ void onNumberOfAppsResult(int num);
+ }
+
+ /**
+ * Callback that receives the list of packages installed on the device.
+ */
+ interface ListOfAppsCallback {
+ void onListOfAppsResult(List<UserAppInfo> result);
+ }
+}