Adding Manage External Sources Settings
Added a settings fragment to manage external sources. It lists all applications that have either requested REQUEST_INSTALL_PACKAGES or have their app op changed from default. Test: Will include in follow-up CL. Tracked in b/33792674 Bug: 31002700 Change-Id: Ibd2a1922be214b62aec4eefa45f7b9691256b205
This commit is contained in:
@@ -58,6 +58,7 @@ import com.android.settings.AppHeader;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Settings.AllApplicationsActivity;
|
||||
import com.android.settings.Settings.HighPowerApplicationsActivity;
|
||||
import com.android.settings.Settings.ManageExternalSourcesActivity;
|
||||
import com.android.settings.Settings.NotificationAppListActivity;
|
||||
import com.android.settings.Settings.OverlaySettingsActivity;
|
||||
import com.android.settings.Settings.StorageUseActivity;
|
||||
@@ -66,6 +67,7 @@ import com.android.settings.Settings.WriteSettingsActivity;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
|
||||
import com.android.settings.applications.AppStateInstallAppsBridge.InstallAppsState;
|
||||
import com.android.settings.applications.AppStateUsageBridge.UsageState;
|
||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||
import com.android.settings.dashboard.SummaryLoader;
|
||||
@@ -136,6 +138,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
public static final int FILTER_APPS_USAGE_ACCESS = 8;
|
||||
public static final int FILTER_APPS_WITH_OVERLAY = 9;
|
||||
public static final int FILTER_APPS_WRITE_SETTINGS = 10;
|
||||
public static final int FILTER_APPS_INSTALL_SOURCES = 12;
|
||||
|
||||
// This is the string labels for the filter modes above, the order must be kept in sync.
|
||||
public static final int[] FILTER_LABELS = new int[]{
|
||||
@@ -151,6 +154,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
R.string.filter_all_apps, // Usage access screen, never displayed
|
||||
R.string.filter_overlay_apps, // Apps with overlay permission
|
||||
R.string.filter_write_settings_apps, // Apps that can write system settings
|
||||
R.string.filter_install_sources_apps, // Apps that are trusted sources of apks
|
||||
};
|
||||
// This is the actual mapping to filters from FILTER_ constants above, the order must
|
||||
// be kept in sync.
|
||||
@@ -169,6 +173,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
AppStateUsageBridge.FILTER_APP_USAGE, // Apps with Domain URLs
|
||||
AppStateOverlayBridge.FILTER_SYSTEM_ALERT_WINDOW, // Apps that can draw overlays
|
||||
AppStateWriteSettingsBridge.FILTER_WRITE_SETTINGS, // Apps that can write system settings
|
||||
AppStateInstallAppsBridge.FILTER_APP_SOURCES,
|
||||
};
|
||||
|
||||
// sort order
|
||||
@@ -210,6 +215,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
public static final int LIST_TYPE_HIGH_POWER = 5;
|
||||
public static final int LIST_TYPE_OVERLAY = 6;
|
||||
public static final int LIST_TYPE_WRITE_SETTINGS = 7;
|
||||
public static final int LIST_TYPE_MANAGE_SOURCES = 8;
|
||||
|
||||
private View mRootView;
|
||||
|
||||
@@ -259,6 +265,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
mListType = LIST_TYPE_OVERLAY;
|
||||
} else if (className.equals(WriteSettingsActivity.class.getName())) {
|
||||
mListType = LIST_TYPE_WRITE_SETTINGS;
|
||||
} else if (className.equals(ManageExternalSourcesActivity.class.getName())) {
|
||||
mListType = LIST_TYPE_MANAGE_SOURCES;
|
||||
} else {
|
||||
mListType = LIST_TYPE_MAIN;
|
||||
}
|
||||
@@ -379,6 +387,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
return FILTER_APPS_WITH_OVERLAY;
|
||||
case LIST_TYPE_WRITE_SETTINGS:
|
||||
return FILTER_APPS_WRITE_SETTINGS;
|
||||
case LIST_TYPE_MANAGE_SOURCES:
|
||||
return FILTER_APPS_INSTALL_SOURCES;
|
||||
default:
|
||||
return FILTER_APPS_ALL;
|
||||
}
|
||||
@@ -412,6 +422,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
return MetricsEvent.SYSTEM_ALERT_WINDOW_APPS;
|
||||
case LIST_TYPE_WRITE_SETTINGS:
|
||||
return MetricsEvent.SYSTEM_ALERT_WINDOW_APPS;
|
||||
case LIST_TYPE_MANAGE_SOURCES:
|
||||
return MetricsEvent.MANAGE_EXTERNAL_SOURCES;
|
||||
default:
|
||||
return MetricsEvent.VIEW_UNKNOWN;
|
||||
}
|
||||
@@ -503,6 +515,9 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
case LIST_TYPE_WRITE_SETTINGS:
|
||||
startAppInfoFragment(WriteSettingsDetails.class, R.string.write_system_settings);
|
||||
break;
|
||||
case LIST_TYPE_MANAGE_SOURCES:
|
||||
startAppInfoFragment(ExternalSourcesDetails.class, R.string.install_other_apps);
|
||||
break;
|
||||
// TODO: Figure out if there is a way where we can spin up the profile's settings
|
||||
// process ahead of time, to avoid a long load of data when user clicks on a managed app.
|
||||
// Maybe when they load the list of apps that contains managed profile apps.
|
||||
@@ -796,6 +811,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
mExtraInfoBridge = new AppStateOverlayBridge(mContext, mState, this);
|
||||
} else if (mManageApplications.mListType == LIST_TYPE_WRITE_SETTINGS) {
|
||||
mExtraInfoBridge = new AppStateWriteSettingsBridge(mContext, mState, this);
|
||||
} else if (mManageApplications.mListType == LIST_TYPE_MANAGE_SOURCES) {
|
||||
mExtraInfoBridge = new AppStateInstallAppsBridge(mContext, mState, this);
|
||||
} else {
|
||||
mExtraInfoBridge = null;
|
||||
}
|
||||
@@ -1206,6 +1223,11 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
holder.entry));
|
||||
break;
|
||||
|
||||
case LIST_TYPE_MANAGE_SOURCES:
|
||||
holder.summary
|
||||
.setText(((InstallAppsState) holder.entry.extraInfo).getSummary());
|
||||
break;
|
||||
|
||||
default:
|
||||
holder.updateSizeText(mManageApplications.mInvalidSizeStr, mWhichSize);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user