14d48e820ac6d77dea33df9b5c432100345266972Tony Mantler/* 24d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Copyright (C) 2015 The Android Open Source Project 34d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 44d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 54d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * you may not use this file except in compliance with the License. 64d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * You may obtain a copy of the License at 74d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 84d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 94d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 104d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Unless required by applicable law or agreed to in writing, software 114d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 124d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * See the License for the specific language governing permissions and 144d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * limitations under the License 154d48e820ac6d77dea33df9b5c432100345266972Tony Mantler */ 164d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 174d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerpackage com.android.tv.settings.device.apps; 184d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 194d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.content.Context; 204d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.content.pm.ApplicationInfo; 214d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.content.pm.PackageManager; 224d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.os.storage.StorageManager; 234d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.os.storage.VolumeInfo; 244d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.text.TextUtils; 254d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 264d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport com.android.settingslib.applications.ApplicationsState; 274d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport com.android.tv.settings.R; 284d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 290935eb479020729a8ee64624394a1d001a748759Tony Mantlerimport java.util.List; 300935eb479020729a8ee64624394a1d001a748759Tony Mantler 314d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerpublic class AppStoragePreference extends AppActionPreference { 324d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private final PackageManager mPackageManager; 334d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private final StorageManager mStorageManager; 344d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 354d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public AppStoragePreference(Context context, ApplicationsState.AppEntry entry) { 364d48e820ac6d77dea33df9b5c432100345266972Tony Mantler super(context, entry); 374d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mPackageManager = context.getPackageManager(); 384d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); 394d48e820ac6d77dea33df9b5c432100345266972Tony Mantler refresh(); 404d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 414d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 424d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void refresh() { 430935eb479020729a8ee64624394a1d001a748759Tony Mantler final ApplicationInfo applicationInfo = mEntry.info; 440935eb479020729a8ee64624394a1d001a748759Tony Mantler final VolumeInfo volumeInfo = mPackageManager.getPackageCurrentVolume(applicationInfo); 450935eb479020729a8ee64624394a1d001a748759Tony Mantler final List<VolumeInfo> candidates = 460935eb479020729a8ee64624394a1d001a748759Tony Mantler mPackageManager.getPackageCandidateVolumes(applicationInfo); 470935eb479020729a8ee64624394a1d001a748759Tony Mantler if (candidates.size() > 1 || 480935eb479020729a8ee64624394a1d001a748759Tony Mantler (candidates.size() == 1 && !candidates.contains(volumeInfo))) { 490935eb479020729a8ee64624394a1d001a748759Tony Mantler setIntent(MoveAppActivity 500935eb479020729a8ee64624394a1d001a748759Tony Mantler .getLaunchIntent(getContext(), mEntry.info.packageName, getAppName())); 510935eb479020729a8ee64624394a1d001a748759Tony Mantler } 524d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 534d48e820ac6d77dea33df9b5c432100345266972Tony Mantler setTitle(R.string.device_apps_app_management_storage_used); 544d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 554d48e820ac6d77dea33df9b5c432100345266972Tony Mantler final String volumeDesc = mStorageManager.getBestVolumeDescription(volumeInfo); 564d48e820ac6d77dea33df9b5c432100345266972Tony Mantler final String size = mEntry.sizeStr; 574d48e820ac6d77dea33df9b5c432100345266972Tony Mantler if (TextUtils.isEmpty(size)) { 584d48e820ac6d77dea33df9b5c432100345266972Tony Mantler setSummary(R.string.storage_calculating_size); 594d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } else { 604d48e820ac6d77dea33df9b5c432100345266972Tony Mantler setSummary(getContext().getString(R.string.device_apps_app_management_storage_used_desc, 614d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mEntry.sizeStr, volumeDesc)); 624d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 634d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 644d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 654d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 664d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private String getAppName() { 674d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mEntry.ensureLabel(getContext()); 684d48e820ac6d77dea33df9b5c432100345266972Tony Mantler return mEntry.label; 694d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 704d48e820ac6d77dea33df9b5c432100345266972Tony Mantler} 71