129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler/*
229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * Copyright (C) 2015 The Android Open Source Project
329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler *
429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License");
529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * you may not use this file except in compliance with the License.
629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * You may obtain a copy of the License at
729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler *
829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler *      http://www.apache.org/licenses/LICENSE-2.0
929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler *
1029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * Unless required by applicable law or agreed to in writing, software
1129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS,
1229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * See the License for the specific language governing permissions and
1429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler * limitations under the License
1529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler */
1629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
1729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerpackage com.android.tv.settings.system.development;
1829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
1929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.app.usage.UsageStatsManager;
2029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.content.Context;
2129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.content.Intent;
2229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.content.pm.PackageManager;
2329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.content.pm.ResolveInfo;
2429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.os.Bundle;
2529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.support.annotation.Keep;
2629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.support.v17.preference.LeanbackPreferenceFragment;
2729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.support.v7.preference.Preference;
2829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport android.support.v7.preference.PreferenceScreen;
2929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
3029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport com.android.tv.settings.R;
3129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
3229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerimport java.util.List;
3329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
3429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler@Keep
3529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantlerpublic class InactiveApps extends LeanbackPreferenceFragment implements
3629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        Preference.OnPreferenceClickListener {
3729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
3829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    private UsageStatsManager mUsageStats;
3929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
4029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    @Override
4129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    public void onCreate(Bundle icicle) {
4229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        mUsageStats = getActivity().getSystemService(UsageStatsManager.class);
4329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        super.onCreate(icicle);
4429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    }
4529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
4629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    @Override
4729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    public void onResume() {
4829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        super.onResume();
4929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        init();
5029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    }
5129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
5229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    @Override
5329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
5429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        final Context themedContext = getPreferenceManager().getContext();
5529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        final PreferenceScreen screen = getPreferenceManager()
5629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler                .createPreferenceScreen(themedContext);
5729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        screen.setTitle(R.string.inactive_apps_title);
5829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        setPreferenceScreen(screen);
5929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    }
6029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
6129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    private void init() {
6229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        final Context themedContext = getPreferenceManager().getContext();
6329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        final PreferenceScreen screen = getPreferenceScreen();
6429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        screen.removeAll();
6529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        screen.setOrderingAsAdded(false);
6629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        final PackageManager pm = getActivity().getPackageManager();
6729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
6829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
6929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);
7029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        List<ResolveInfo> apps = pm.queryIntentActivities(launcherIntent, 0);
7129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        for (ResolveInfo app : apps) {
7229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            String packageName = app.activityInfo.applicationInfo.packageName;
7329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            Preference p = new Preference(themedContext);
7429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            p.setTitle(app.loadLabel(pm));
7529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            p.setIcon(app.loadIcon(pm));
7629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            p.setKey(packageName);
7729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            updateSummary(p);
7829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            p.setOnPreferenceClickListener(this);
7929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
8029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler            screen.addPreference(p);
8129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        }
8229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    }
8329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
8429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    private void updateSummary(Preference p) {
8529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        boolean inactive = mUsageStats.isAppInactive(p.getKey());
8629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        p.setSummary(inactive
8729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler                ? R.string.inactive_app_inactive_summary
8829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler                : R.string.inactive_app_active_summary);
8929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    }
9029e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
9129e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    @Override
9229e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    public boolean onPreferenceClick(Preference preference) {
9329e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        String packageName = preference.getKey();
9429e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        mUsageStats.setAppInactive(packageName, !mUsageStats.isAppInactive(packageName));
9529e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        updateSummary(preference);
9629e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler        return false;
9729e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler    }
9829e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler
9929e0208b8dc28b4180e8b2c6e5426bb61355cd34Tony Mantler}
100