Files
app_Settings/src/com/android/settings/applications/AdvancedAppSettings.java
Svetoslav Ganov 7f62addc10 Cleanup of the PackageInstaller API - Settings
The PackageInstaller app manages side-loading apps as well
as permission management. It should be updatable, hence
should rely on system APIs to talk to the platform. This
is the first step of defining an API boundary.

Change-Id: Ibb21114a7a9fa28f6db68492fe37c02c1b2f0c6b
2016-04-21 20:34:53 -07:00

159 lines
5.5 KiB
Java

/*
* Copyright (C) 2015 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.settings.applications;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.SearchIndexableResource;
import android.support.v7.preference.Preference;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.applications.PermissionsSummaryHelper.PermissionsResultCallback;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
import com.android.settingslib.applications.ApplicationsState.Session;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class AdvancedAppSettings extends SettingsPreferenceFragment implements
ApplicationsState.Callbacks, Indexable {
static final String TAG = "AdvancedAppSettings";
private static final String KEY_APP_PERM = "manage_perms";
private static final String KEY_APP_DOMAIN_URLS = "domain_urls";
private static final String KEY_HIGH_POWER_APPS = "high_power_apps";
private static final String KEY_SYSTEM_ALERT_WINDOW = "system_alert_window";
private static final String KEY_WRITE_SETTINGS_APPS = "write_settings_apps";
private Session mSession;
private Preference mAppPermsPreference;
private Preference mAppDomainURLsPreference;
private Preference mHighPowerPreference;
private Preference mSystemAlertWindowPreference;
private Preference mWriteSettingsPreference;
private BroadcastReceiver mPermissionReceiver;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.advanced_apps);
Preference permissions = getPreferenceScreen().findPreference(KEY_APP_PERM);
permissions.setIntent(new Intent(Intent.ACTION_MANAGE_PERMISSIONS));
ApplicationsState applicationsState = ApplicationsState.getInstance(
getActivity().getApplication());
mSession = applicationsState.newSession(this);
mAppPermsPreference = findPreference(KEY_APP_PERM);
mAppDomainURLsPreference = findPreference(KEY_APP_DOMAIN_URLS);
mHighPowerPreference = findPreference(KEY_HIGH_POWER_APPS);
mSystemAlertWindowPreference = findPreference(KEY_SYSTEM_ALERT_WINDOW);
mWriteSettingsPreference = findPreference(KEY_WRITE_SETTINGS_APPS);
}
@Override
protected int getMetricsCategory() {
return MetricsEvent.APPLICATIONS_ADVANCED;
}
@Override
public void onRunningStateChanged(boolean running) {
// No-op.
}
@Override
public void onPackageListChanged() {
// No-op.
}
@Override
public void onRebuildComplete(ArrayList<AppEntry> apps) {
// No-op.
}
@Override
public void onPackageIconChanged() {
// No-op.
}
@Override
public void onPackageSizeChanged(String packageName) {
// No-op.
}
@Override
public void onAllSizesComputed() {
// No-op.
}
@Override
public void onLauncherInfoChanged() {
// No-op.
}
@Override
public void onLoadEntriesCompleted() {
// No-op.
}
private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
@Override
public void onAppWithPermissionsCountsResult(int standardGrantedPermissionAppCount,
int standardUsedPermissionAppCount) {
if (getActivity() == null) {
return;
}
mPermissionReceiver = null;
if (standardUsedPermissionAppCount != 0) {
mAppPermsPreference.setSummary(getContext().getString(
R.string.app_permissions_summary,
standardGrantedPermissionAppCount,
standardUsedPermissionAppCount));
} else {
mAppPermsPreference.setSummary(null);
}
}
};
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.advanced_apps;
return Arrays.asList(sir);
}
@Override
public List<String> getNonIndexableKeys(Context context) {
return Utils.getNonIndexable(R.xml.advanced_apps, context);
}
};
}