DO Disclosures: detailed application lists

Add UI that lists enterprise set default apps for handling important intents
(opening browser, using camera, phone, etc).

Bug: 32692748
Test: m RunSettingsRoboTests
Change-Id: I75bb97d1b3728b1dcb90981b24d12edf510c4b04
This commit is contained in:
Denis Kuznetsov
2017-04-12 17:33:35 +02:00
parent 60b2960cbb
commit f0a61dd112
26 changed files with 970 additions and 182 deletions

View File

@@ -22,6 +22,7 @@ import android.content.Intent;
import android.content.pm.ComponentInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
@@ -31,6 +32,7 @@ import android.view.View;
import com.android.settings.applications.instantapps.InstantAppButtonsController;
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -103,36 +105,34 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
}
@Override
public Set<PersistentPreferredActivityInfo> findPersistentPreferredActivities(
Intent[] intents) {
final Set<PersistentPreferredActivityInfo> activities = new ArraySet<>();
final List<UserHandle> users = mUm.getUserProfiles();
public List<UserAppInfo> findPersistentPreferredActivities(int userId, Intent[] intents) {
final List<UserAppInfo> preferredActivities = new ArrayList<>();
final Set<UserAppInfo> uniqueApps = new ArraySet<>();
final UserInfo userInfo = mUm.getUserInfo(userId);
for (final Intent intent : intents) {
for (final UserHandle user : users) {
final int userId = user.getIdentifier();
try {
final ResolveInfo resolveInfo = mPms.findPersistentPreferredActivity(intent,
userId);
if (resolveInfo != null) {
ComponentInfo componentInfo = null;
if (resolveInfo.activityInfo != null) {
componentInfo = resolveInfo.activityInfo;
} else if (resolveInfo.serviceInfo != null) {
componentInfo = resolveInfo.serviceInfo;
} else if (resolveInfo.providerInfo != null) {
componentInfo = resolveInfo.providerInfo;
}
if (componentInfo != null) {
activities.add(new PersistentPreferredActivityInfo(
componentInfo.packageName, userId));
try {
final ResolveInfo resolveInfo =
mPms.findPersistentPreferredActivity(intent, userId);
if (resolveInfo != null) {
ComponentInfo componentInfo = null;
if (resolveInfo.activityInfo != null) {
componentInfo = resolveInfo.activityInfo;
} else if (resolveInfo.serviceInfo != null) {
componentInfo = resolveInfo.serviceInfo;
} else if (resolveInfo.providerInfo != null) {
componentInfo = resolveInfo.providerInfo;
}
if (componentInfo != null) {
UserAppInfo info = new UserAppInfo(userInfo, componentInfo.applicationInfo);
if (uniqueApps.add(info)) {
preferredActivities.add(info);
}
}
} catch (RemoteException exception) {
}
} catch (RemoteException exception) {
}
}
return activities;
return preferredActivities;
}
private static class CurrentUserAndManagedProfilePolicyInstalledAppCounter