1390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick/* 2390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * Copyright (C) 2010 The Android Open Source Project 3390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * 4390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * Licensed under the Apache License, Version 2.0 (the "License"); 5390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * you may not use this file except in compliance with the License. 6390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * You may obtain a copy of the License at 7390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * 8390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * http://www.apache.org/licenses/LICENSE-2.0 9390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * 10390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * Unless required by applicable law or agreed to in writing, software 11390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * distributed under the License is distributed on an "AS IS" BASIS, 12390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * See the License for the specific language governing permissions and 14390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick * limitations under the License. 15390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick */ 16390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 17390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickpackage android.app; 18390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 19390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.ComponentName; 20390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.ContentResolver; 21390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.Intent; 22390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.IntentFilter; 23390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.IntentSender; 24390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.ActivityInfo; 25390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.ApplicationInfo; 26390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.ComponentInfo; 27ceb1b0bfaea56251796b08c07b963de7403d84ebAnonymous Cowardimport android.content.pm.ContainerEncryptionParams; 28390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.FeatureInfo; 29390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.IPackageDataObserver; 30390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.IPackageDeleteObserver; 31390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.IPackageInstallObserver; 32390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.IPackageManager; 33390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.IPackageMoveObserver; 34390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.IPackageStatsObserver; 35390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.InstrumentationInfo; 36390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.PackageInfo; 37390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.PackageManager; 38e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Rootimport android.content.pm.ParceledListSlice; 39390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.PermissionGroupInfo; 40390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.PermissionInfo; 41390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.ProviderInfo; 42390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.ResolveInfo; 43390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.pm.ServiceInfo; 445ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Rootimport android.content.pm.ManifestDigest; 45706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningsimport android.content.pm.VerificationParams; 460aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootimport android.content.pm.VerifierDeviceIdentity; 47390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.res.Resources; 48390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.content.res.XmlResourceParser; 49390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.graphics.drawable.Drawable; 50390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.net.Uri; 51390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.os.Process; 52390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.os.RemoteException; 53390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.util.Log; 54a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brownimport android.view.Display; 55390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 56390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.lang.ref.WeakReference; 57390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.ArrayList; 58390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.HashMap; 59390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.Iterator; 60390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.List; 61390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 62390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick/*package*/ 63390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickfinal class ApplicationPackageManager extends PackageManager { 64390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final String TAG = "ApplicationPackageManager"; 65390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final static boolean DEBUG = false; 66390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final static boolean DEBUG_ICONS = false; 67390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 68390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 69390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PackageInfo getPackageInfo(String packageName, int flags) 70390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 71390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 72ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey PackageInfo pi = mPM.getPackageInfo(packageName, flags, mContext.getUserId()); 73390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 74390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 75390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 76390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 77390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 78390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 79390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 80390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 81390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 82390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 83390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 84390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] currentToCanonicalPackageNames(String[] names) { 85390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 86390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.currentToCanonicalPackageNames(names); 87390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 88390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 89390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 90390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 91390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 92390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 93390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] canonicalToCurrentPackageNames(String[] names) { 94390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 95390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.canonicalToCurrentPackageNames(names); 96390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 97390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 98390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 99390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 100390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 101390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 102390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Intent getLaunchIntentForPackage(String packageName) { 103390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // First see if the package has an INFO activity; the existence of 104390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // such an activity is implied to be the desired front-door for the 105390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // overall package (such as if it has multiple launcher entries). 106390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent intentToResolve = new Intent(Intent.ACTION_MAIN); 107390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.addCategory(Intent.CATEGORY_INFO); 108390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.setPackage(packageName); 109194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn List<ResolveInfo> ris = queryIntentActivities(intentToResolve, 0); 110390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 111390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Otherwise, try to find a main launcher activity. 112194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn if (ris == null || ris.size() <= 0) { 113390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // reuse the intent instance 114390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.removeCategory(Intent.CATEGORY_INFO); 115390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER); 116390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.setPackage(packageName); 117194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn ris = queryIntentActivities(intentToResolve, 0); 118390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 119194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn if (ris == null || ris.size() <= 0) { 120390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 121390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 122390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent intent = new Intent(intentToResolve); 123390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 124194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn intent.setClassName(ris.get(0).activityInfo.packageName, 125194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn ris.get(0).activityInfo.name); 126390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return intent; 127390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 128390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 129390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 130390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int[] getPackageGids(String packageName) 131390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 132390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 133390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int[] gids = mPM.getPackageGids(packageName); 134390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (gids == null || gids.length > 0) { 135390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return gids; 136390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 137390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 138390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 139390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 140390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 141390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 142390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 143390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 144390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 145390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PermissionInfo getPermissionInfo(String name, int flags) 146390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 147390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 148390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick PermissionInfo pi = mPM.getPermissionInfo(name, flags); 149390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 150390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 151390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 152390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 153390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 154390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 155390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 156390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(name); 157390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 158390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 159390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 160390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) 161390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 162390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 163390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick List<PermissionInfo> pi = mPM.queryPermissionsByGroup(group, flags); 164390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 165390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 166390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 167390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 168390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 169390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 170390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 171390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(group); 172390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 173390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 174390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 175390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PermissionGroupInfo getPermissionGroupInfo(String name, 176390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) throws NameNotFoundException { 177390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 178390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick PermissionGroupInfo pgi = mPM.getPermissionGroupInfo(name, flags); 179390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pgi != null) { 180390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pgi; 181390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 182390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 183390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 184390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 185390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 186390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(name); 187390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 188390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 189390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 190390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { 191390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 192390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getAllPermissionGroups(flags); 193390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 194390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 195390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 196390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 197390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 198390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 199390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ApplicationInfo getApplicationInfo(String packageName, int flags) 200390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 201390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 202ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ApplicationInfo ai = mPM.getApplicationInfo(packageName, flags, mContext.getUserId()); 203390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 204390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 205390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 206390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 207390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 208390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 209390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 210390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 211390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 212390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 213390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 214390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ActivityInfo getActivityInfo(ComponentName className, int flags) 215390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 216390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 217ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ActivityInfo ai = mPM.getActivityInfo(className, flags, mContext.getUserId()); 218390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 219390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 220390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 221390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 222390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 223390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 224390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 225390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 226390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 227390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 228390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 229390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ActivityInfo getReceiverInfo(ComponentName className, int flags) 230390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 231390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 232ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ActivityInfo ai = mPM.getReceiverInfo(className, flags, mContext.getUserId()); 233390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 234390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 235390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 236390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 237390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 238390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 239390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 240390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 241390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 242390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 243390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 244390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ServiceInfo getServiceInfo(ComponentName className, int flags) 245390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 246390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 247ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ServiceInfo si = mPM.getServiceInfo(className, flags, mContext.getUserId()); 248390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (si != null) { 249390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return si; 250390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 251390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 252390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 253390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 254390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 255390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 256390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 257390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 258390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 259390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ProviderInfo getProviderInfo(ComponentName className, int flags) 260390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 261390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 262ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ProviderInfo pi = mPM.getProviderInfo(className, flags, mContext.getUserId()); 263390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 264390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 265390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 266390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 267390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 268390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 269390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 270390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 271390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 272390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 273390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 274390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] getSystemSharedLibraryNames() { 275390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 276390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getSystemSharedLibraryNames(); 277390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 278390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 279390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 280390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 281390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 282390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 283390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public FeatureInfo[] getSystemAvailableFeatures() { 284390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 285390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getSystemAvailableFeatures(); 286390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 287390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 288390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 289390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 290390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 291390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 292390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean hasSystemFeature(String name) { 293390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 294390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.hasSystemFeature(name); 295390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 296390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 297390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 298390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 299390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 300390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 301390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkPermission(String permName, String pkgName) { 302390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 303390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkPermission(permName, pkgName); 304390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 305390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 306390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 307390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 308390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 309390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 310390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean addPermission(PermissionInfo info) { 311390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 312390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.addPermission(info); 313390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 314390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 315390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 316390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 317390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 318390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 319390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean addPermissionAsync(PermissionInfo info) { 320390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 321390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.addPermissionAsync(info); 322390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 323390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 324390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 325390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 326390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 327390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 328390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void removePermission(String name) { 329390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 330390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.removePermission(name); 331390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 332390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 333390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 334390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 335390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 336390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 337e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public void grantPermission(String packageName, String permissionName) { 338e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn try { 339e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn mPM.grantPermission(packageName, permissionName); 340e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } catch (RemoteException e) { 341e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn throw new RuntimeException("Package manager has died", e); 342e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 343e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 344e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 345e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn @Override 346e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public void revokePermission(String packageName, String permissionName) { 347e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn try { 348e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn mPM.revokePermission(packageName, permissionName); 349e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } catch (RemoteException e) { 350e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn throw new RuntimeException("Package manager has died", e); 351e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 352e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 353e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 354e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn @Override 355390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkSignatures(String pkg1, String pkg2) { 356390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 357390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkSignatures(pkg1, pkg2); 358390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 359390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 360390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 361390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 362390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 363390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 364390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkSignatures(int uid1, int uid2) { 365390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 366390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkUidSignatures(uid1, uid2); 367390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 368390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 369390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 370390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 371390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 372390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 373390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] getPackagesForUid(int uid) { 374390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 375390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPackagesForUid(uid); 376390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 377390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 378390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 379390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 380390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 381390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 382390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String getNameForUid(int uid) { 383390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 384390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getNameForUid(uid); 385390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 386390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 387390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 388390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 389390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 390390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 391390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getUidForSharedUser(String sharedUserName) 392390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 393390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 394390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int uid = mPM.getUidForSharedUser(sharedUserName); 395390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if(uid != -1) { 396390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return uid; 397390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 398390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 399390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 400390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 401390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException("No shared userid for user:"+sharedUserName); 402390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 403390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 404e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root @SuppressWarnings("unchecked") 405390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 406390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PackageInfo> getInstalledPackages(int flags) { 407ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return getInstalledPackages(flags, mContext.getUserId()); 408151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani } 409151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani 410151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani /** @hide */ 411151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani @Override 412151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani public List<PackageInfo> getInstalledPackages(int flags, int userId) { 413390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 414e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final List<PackageInfo> packageInfos = new ArrayList<PackageInfo>(); 415e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root PackageInfo lastItem = null; 416e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root ParceledListSlice<PackageInfo> slice; 417e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 418e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root do { 419e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final String lastKey = lastItem != null ? lastItem.packageName : null; 420151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani slice = mPM.getInstalledPackages(flags, lastKey, userId); 421e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root lastItem = slice.populateList(packageInfos, PackageInfo.CREATOR); 422e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root } while (!slice.isLastSlice()); 423e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 424e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root return packageInfos; 425390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 426390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 427390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 428390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 429390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 430e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root @SuppressWarnings("unchecked") 431390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 432390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ApplicationInfo> getInstalledApplications(int flags) { 433ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey final int userId = mContext.getUserId(); 434390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 435e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final List<ApplicationInfo> applicationInfos = new ArrayList<ApplicationInfo>(); 436e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root ApplicationInfo lastItem = null; 437e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root ParceledListSlice<ApplicationInfo> slice; 438e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 439e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root do { 440e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final String lastKey = lastItem != null ? lastItem.packageName : null; 441483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani slice = mPM.getInstalledApplications(flags, lastKey, userId); 442e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root lastItem = slice.populateList(applicationInfos, ApplicationInfo.CREATOR); 443e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root } while (!slice.isLastSlice()); 444e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 445e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root return applicationInfos; 446390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 447390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 448390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 449390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 450390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 451390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 452390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ResolveInfo resolveActivity(Intent intent, int flags) { 453ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return resolveActivityAsUser(intent, flags, mContext.getUserId()); 45458d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov } 45558d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov 45658d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov @Override 45758d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public ResolveInfo resolveActivityAsUser(Intent intent, int flags, int userId) { 458390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 459390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.resolveIntent( 460390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 461390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 46258d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov flags, 46358d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov userId); 464390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 465390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 466390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 467390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 468390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 469390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 470390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ResolveInfo> queryIntentActivities(Intent intent, 471390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 472ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return queryIntentActivitiesAsUser(intent, flags, mContext.getUserId()); 473151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani } 474151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani 475151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani /** @hide Same as above but for a specific user */ 476151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani @Override 47758d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent, 478151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani int flags, int userId) { 479390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 480390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentActivities( 481390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 482390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 483483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 484151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani userId); 485390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 486390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 487390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 488390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 489390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 490390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 491390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ResolveInfo> queryIntentActivityOptions( 492390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName caller, Intent[] specifics, Intent intent, 493390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 494390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final ContentResolver resolver = mContext.getContentResolver(); 495390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 496390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String[] specificTypes = null; 497390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (specifics != null) { 498390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final int N = specifics.length; 499390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick for (int i=0; i<N; i++) { 500390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent sp = specifics[i]; 501390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (sp != null) { 502390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String t = sp.resolveTypeIfNeeded(resolver); 503390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (t != null) { 504390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (specificTypes == null) { 505390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes = new String[N]; 506390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 507390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes[i] = t; 508390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 509390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 510390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 511390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 512390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 513390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 514390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentActivityOptions(caller, specifics, 515390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes, intent, intent.resolveTypeIfNeeded(resolver), 516ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey flags, mContext.getUserId()); 517390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 518390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 519390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 520390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 521390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 522f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani /** 523f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani * @hide 524f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani */ 525390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 526f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags, int userId) { 527390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 528390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentReceivers( 529390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 530390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 531483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 532f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani userId); 533390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 534390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 535390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 536390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 537390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 538390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 539f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags) { 540ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return queryBroadcastReceivers(intent, flags, mContext.getUserId()); 541f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani } 542f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani 543f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani @Override 544390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ResolveInfo resolveService(Intent intent, int flags) { 545390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 546390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.resolveService( 547390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 548390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 549483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 550ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mContext.getUserId()); 551390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 552390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 553390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 554390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 555390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 556390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 55758d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId) { 558390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 559390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentServices( 560390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 561390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 562483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 56358d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov userId); 564390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 565390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 566390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 567390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 568390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 569390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 57058d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentServices(Intent intent, int flags) { 571ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return queryIntentServicesAsUser(intent, flags, mContext.getUserId()); 57258d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov } 57358d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov 57458d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov @Override 575390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ProviderInfo resolveContentProvider(String name, 576390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 577390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 578ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mPM.resolveContentProvider(name, flags, mContext.getUserId()); 579390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 580390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 581390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 582390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 583390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 584390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 585390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ProviderInfo> queryContentProviders(String processName, 586390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int uid, int flags) { 587390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 588390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryContentProviders(processName, uid, flags); 589390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 590390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 591390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 592390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 593390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 594390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 595390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public InstrumentationInfo getInstrumentationInfo( 596390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName className, int flags) 597390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 598390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 599390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick InstrumentationInfo ii = mPM.getInstrumentationInfo( 600390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick className, flags); 601390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ii != null) { 602390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ii; 603390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 604390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 605390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 606390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 607390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 608390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 609390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 610390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 611390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 612390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<InstrumentationInfo> queryInstrumentation( 613390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String targetPackage, int flags) { 614390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 615390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryInstrumentation(targetPackage, flags); 616390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 617390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 618390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 619390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 620390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 621390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getDrawable(String packageName, int resid, 622390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 623390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName name = new ResourceName(packageName, resid); 624390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Drawable dr = getCachedIcon(name); 625390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (dr != null) { 626390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return dr; 627390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 628390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 629390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 630390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 631390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 632390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 633390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 634390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 635390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 636390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 637390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick dr = r.getDrawable(resid); 638390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (false) { 639390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick RuntimeException e = new RuntimeException("here"); 640390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick e.fillInStackTrace(); 641390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w(TAG, "Getting drawable 0x" + Integer.toHexString(resid) 642390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + " from package " + packageName 643390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ": app scale=" + r.getCompatibilityInfo().applicationScale 644390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ", caller scale=" + mContext.getResources().getCompatibilityInfo().applicationScale, 645390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick e); 646390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 647390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (DEBUG_ICONS) Log.v(TAG, "Getting drawable 0x" 648390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " from " + r 649390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ": " + dr); 650390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick putCachedIcon(name, dr); 651390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return dr; 652390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 653390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving resources for" 654390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 65508f16544176a04a958d403409f98cd0502bb8da3Joe Onorato } catch (Resources.NotFoundException e) { 65608f16544176a04a958d403409f98cd0502bb8da3Joe Onorato Log.w("PackageManager", "Failure retrieving resources for" 65708f16544176a04a958d403409f98cd0502bb8da3Joe Onorato + appInfo.packageName + ": " + e.getMessage()); 658390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 659390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 660390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 661390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving icon 0x" 662390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 663390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 664390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 665390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 666390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 667390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 668390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getActivityIcon(ComponentName activityName) 669390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 670390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityInfo(activityName, 0).loadIcon(this); 671390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 672390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 673390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getActivityIcon(Intent intent) 674390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 675390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (intent.getComponent() != null) { 676390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityIcon(intent.getComponent()); 677390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 678390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 679390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResolveInfo info = resolveActivity( 680390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, PackageManager.MATCH_DEFAULT_ONLY); 681390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (info != null) { 682390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.activityInfo.loadIcon(this); 683390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 684390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 68539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy throw new NameNotFoundException(intent.toUri(0)); 686390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 687390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 688390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getDefaultActivityIcon() { 689390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return Resources.getSystem().getDrawable( 690390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick com.android.internal.R.drawable.sym_def_app_icon); 691390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 692390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 693390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getApplicationIcon(ApplicationInfo info) { 694390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadIcon(this); 695390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 696390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 697390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getApplicationIcon(String packageName) 698390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 699390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getApplicationIcon(getApplicationInfo(packageName, 0)); 700390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 701390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 702390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 703390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getActivityLogo(ComponentName activityName) 704390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 705390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityInfo(activityName, 0).loadLogo(this); 706390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 707390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 708390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 709390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getActivityLogo(Intent intent) 710390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 711390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (intent.getComponent() != null) { 712390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityLogo(intent.getComponent()); 713390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 714390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 715390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResolveInfo info = resolveActivity( 716390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, PackageManager.MATCH_DEFAULT_ONLY); 717390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (info != null) { 718390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.activityInfo.loadLogo(this); 719390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 720390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 721390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(intent.toUri(0)); 722390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 723390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 724390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 725390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getApplicationLogo(ApplicationInfo info) { 726390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadLogo(this); 727390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 728390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 729390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 730390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getApplicationLogo(String packageName) 731390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 732390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getApplicationLogo(getApplicationInfo(packageName, 0)); 733390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 734390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 735390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForActivity( 736390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName activityName) throws NameNotFoundException { 737390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getResourcesForApplication( 738390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick getActivityInfo(activityName, 0).applicationInfo); 739390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 740390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 741390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForApplication( 742390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo app) throws NameNotFoundException { 743390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (app.packageName.equals("system")) { 744390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mContext.mMainThread.getSystemContext().getResources(); 745390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 746390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = mContext.mMainThread.getTopLevelResources( 747a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown app.uid == Process.myUid() ? app.sourceDir : app.publicSourceDir, 748a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown Display.DEFAULT_DISPLAY, null, mContext.mPackageInfo); 749390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (r != null) { 750390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return r; 751390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 752390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException("Unable to open " + app.publicSourceDir); 753390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 754390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 755390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForApplication( 756390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String appPackageName) throws NameNotFoundException { 757390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getResourcesForApplication( 758390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick getApplicationInfo(appPackageName, 0)); 759390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 760390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 76198edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani /** @hide */ 76298edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani @Override 76398edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani public Resources getResourcesForApplicationAsUser(String appPackageName, int userId) 76498edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throws NameNotFoundException { 765ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey if (userId < 0) { 766ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey throw new IllegalArgumentException( 767ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey "Call does not support special user #" + userId); 768ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey } 769ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey if ("system".equals(appPackageName)) { 770ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mContext.mMainThread.getSystemContext().getResources(); 771ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey } 77298edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani try { 77398edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani ApplicationInfo ai = mPM.getApplicationInfo(appPackageName, 0, userId); 77498edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani if (ai != null) { 77598edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani return getResourcesForApplication(ai); 77698edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 77798edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } catch (RemoteException e) { 77898edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throw new RuntimeException("Package manager has died", e); 77998edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 78098edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throw new NameNotFoundException("Package " + appPackageName + " doesn't exist"); 78198edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 78298edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani 783390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int mCachedSafeMode = -1; 784390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public boolean isSafeMode() { 785390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 786390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (mCachedSafeMode < 0) { 787390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mCachedSafeMode = mPM.isSafeMode() ? 1 : 0; 788390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 789390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mCachedSafeMode != 0; 790390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 791390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 792390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 793390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 794390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 795390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick static void configurationChanged() { 796390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 797390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sIconCache.clear(); 798390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.clear(); 799390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 800390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 801390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 802390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationPackageManager(ContextImpl context, 803390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageManager pm) { 804390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mContext = context; 805390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM = pm; 806390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 807390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 808390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private Drawable getCachedIcon(ResourceName name) { 809390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 81039fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy WeakReference<Drawable.ConstantState> wr = sIconCache.get(name); 811390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (DEBUG_ICONS) Log.v(TAG, "Get cached weak drawable ref for " 812390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + name + ": " + wr); 813390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (wr != null) { // we have the activity 81439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy Drawable.ConstantState state = wr.get(); 81539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (state != null) { 81639fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (DEBUG_ICONS) { 81739fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy Log.v(TAG, "Get cached drawable state for " + name + ": " + state); 81839fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy } 81939fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // Note: It's okay here to not use the newDrawable(Resources) variant 82039fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // of the API. The ConstantState comes from a drawable that was 82139fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // originally created by passing the proper app Resources instance 82239fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // which means the state should already contain the proper 82339fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // resources specific information (like density.) See 82439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // BitmapDrawable.BitmapState for instance. 82539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy return state.newDrawable(); 826390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 827390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // our entry has been purged 828390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sIconCache.remove(name); 829390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 830390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 831390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 832390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 833390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 834390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private void putCachedIcon(ResourceName name, Drawable dr) { 835390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 83639fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy sIconCache.put(name, new WeakReference<Drawable.ConstantState>(dr.getConstantState())); 83739fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (DEBUG_ICONS) Log.v(TAG, "Added cached drawable state for " + name + ": " + dr); 838390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 839390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 840390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 84139fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy static void handlePackageBroadcast(int cmd, String[] pkgList, boolean hasPkgInfo) { 842390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick boolean immediateGc = false; 843390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (cmd == IApplicationThread.EXTERNAL_STORAGE_UNAVAILABLE) { 844390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick immediateGc = true; 845390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 846390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pkgList != null && (pkgList.length > 0)) { 847390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick boolean needCleanup = false; 848390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick for (String ssp : pkgList) { 849390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 850390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (sIconCache.size() > 0) { 851390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Iterator<ResourceName> it = sIconCache.keySet().iterator(); 852390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick while (it.hasNext()) { 853390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName nm = it.next(); 854390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (nm.packageName.equals(ssp)) { 855390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick //Log.i(TAG, "Removing cached drawable for " + nm); 856390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick it.remove(); 857390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick needCleanup = true; 858390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 859390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 860390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 861390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (sStringCache.size() > 0) { 862390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Iterator<ResourceName> it = sStringCache.keySet().iterator(); 863390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick while (it.hasNext()) { 864390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName nm = it.next(); 865390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (nm.packageName.equals(ssp)) { 866390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick //Log.i(TAG, "Removing cached string for " + nm); 867390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick it.remove(); 868390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick needCleanup = true; 869390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 870390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 871390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 872390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 873390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 874390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (needCleanup || hasPkgInfo) { 875390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (immediateGc) { 876390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Schedule an immediate gc. 877390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Runtime.getRuntime().gc(); 878390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } else { 879390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ActivityThread.currentActivityThread().scheduleGcIdler(); 880390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 881390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 882390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 883390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 884390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 885390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final class ResourceName { 886390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final String packageName; 887390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final int iconId; 888390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 889390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(String _packageName, int _iconId) { 890390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick packageName = _packageName; 891390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick iconId = _iconId; 892390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 893390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 894390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ApplicationInfo aInfo, int _iconId) { 895390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(aInfo.packageName, _iconId); 896390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 897390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 898390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ComponentInfo cInfo, int _iconId) { 899390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(cInfo.applicationInfo.packageName, _iconId); 900390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 901390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 902390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ResolveInfo rInfo, int _iconId) { 903390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(rInfo.activityInfo.applicationInfo.packageName, _iconId); 904390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 905390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 906390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 907390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean equals(Object o) { 908390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (this == o) return true; 909390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (o == null || getClass() != o.getClass()) return false; 910390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 911390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName that = (ResourceName) o; 912390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 913390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (iconId != that.iconId) return false; 914390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return !(packageName != null ? 915390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick !packageName.equals(that.packageName) : that.packageName != null); 916390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 917390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 918390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 919390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 920390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int hashCode() { 921390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int result; 922390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick result = packageName.hashCode(); 923390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick result = 31 * result + iconId; 924390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return result; 925390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 926390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 927390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 928390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String toString() { 929390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return "{ResourceName " + packageName + " / " + iconId + "}"; 930390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 931390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 932390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 933390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private CharSequence getCachedString(ResourceName name) { 934390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 935390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick WeakReference<CharSequence> wr = sStringCache.get(name); 936390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (wr != null) { // we have the activity 937390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick CharSequence cs = wr.get(); 938390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (cs != null) { 939390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return cs; 940390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 941390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // our entry has been purged 942390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.remove(name); 943390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 944390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 945390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 946390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 947390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 948390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private void putCachedString(ResourceName name, CharSequence cs) { 949390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 950390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.put(name, new WeakReference<CharSequence>(cs)); 951390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 952390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 953390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 954390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 955390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public CharSequence getText(String packageName, int resid, 956390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 957390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName name = new ResourceName(packageName, resid); 958390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick CharSequence text = getCachedString(name); 959390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (text != null) { 960390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return text; 961390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 962390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 963390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 964390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 965390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 966390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 967390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 968390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 969390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 970390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 971390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick text = r.getText(resid); 972390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick putCachedString(name, text); 973390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return text; 974390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 975390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving resources for" 976390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 977390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 978390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 979390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 980390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving text 0x" 981390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 982390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 983390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 984390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 985390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 986390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 987390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 988390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public XmlResourceParser getXml(String packageName, int resid, 989390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 990390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 991390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 992390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 993390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 994390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 995390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 996390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 997390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 998390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 999390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return r.getXml(resid); 1000390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 1001390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 1002390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 1003390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving xml 0x" 1004390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 1005390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 1006390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 10073fa51e3430e3bf902ae4f2d72dfb956103b6bd2dAlon Albert Log.w("PackageManager", "Failure retrieving resources for " 1008390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 1009390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1010390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1011390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1012390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1013390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1014390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public CharSequence getApplicationLabel(ApplicationInfo info) { 1015390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadLabel(this); 1016390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1017390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1018390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1019390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags, 1020390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String installerPackageName) { 1021390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1022390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.installPackage(packageURI, observer, flags, installerPackageName); 1023390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1024390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1025390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1026390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1027390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1028390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 10295ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer, 10305ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root int flags, String installerPackageName, Uri verificationURI, 1031e1d7c711df3e3a2d2f195457882aa4ddb5626167Rich Cannings ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) { 10325ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root try { 10335ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root mPM.installPackageWithVerification(packageURI, observer, flags, installerPackageName, 1034e1d7c711df3e3a2d2f195457882aa4ddb5626167Rich Cannings verificationURI, manifestDigest, encryptionParams); 10355ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } catch (RemoteException e) { 10365ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root // Should never happen! 10375ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10385ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10395ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root 10405ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root @Override 1041706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void installPackageWithVerificationAndEncryption(Uri packageURI, 1042706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings IPackageInstallObserver observer, int flags, String installerPackageName, 1043706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) { 1044706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings try { 1045706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings mPM.installPackageWithVerificationAndEncryption(packageURI, observer, flags, 1046706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings installerPackageName, verificationParams, encryptionParams); 1047706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } catch (RemoteException e) { 1048706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings // Should never happen! 1049706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 1050706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 1051706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 1052706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings @Override 10537767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn public int installExistingPackage(String packageName) 10547767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throws NameNotFoundException { 10557767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn try { 10567767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn int res = mPM.installExistingPackage(packageName); 10577767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn if (res == INSTALL_FAILED_INVALID_URI) { 10587767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throw new NameNotFoundException("Package " + packageName + " doesn't exist"); 10597767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10607767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn return res; 10617767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } catch (RemoteException e) { 10627767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn // Should never happen! 10637767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throw new NameNotFoundException("Package " + packageName + " doesn't exist"); 10647767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10657767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10667767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn 10677767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn @Override 10683a9b5fbb97e65019abec97f172b4cbf2100d1225Kenny Root public void verifyPendingInstall(int id, int response) { 10695ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root try { 10703a9b5fbb97e65019abec97f172b4cbf2100d1225Kenny Root mPM.verifyPendingInstall(id, response); 10715ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } catch (RemoteException e) { 10725ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root // Should never happen! 10735ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10745ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10755ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root 10765ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root @Override 1077d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings public void extendVerificationTimeout(int id, int verificationCodeAtTimeout, 1078d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings long millisecondsToDelay) { 1079d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings try { 1080d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings mPM.extendVerificationTimeout(id, verificationCodeAtTimeout, millisecondsToDelay); 1081d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } catch (RemoteException e) { 1082d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings // Should never happen! 1083d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } 1084d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } 1085d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings 1086d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings @Override 1087880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn public void setInstallerPackageName(String targetPackage, 1088880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn String installerPackageName) { 1089880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn try { 1090880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn mPM.setInstallerPackageName(targetPackage, installerPackageName); 1091880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } catch (RemoteException e) { 1092880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn // Should never happen! 1093880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } 1094880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } 1095880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn 1096880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn @Override 1097390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void movePackage(String packageName, IPackageMoveObserver observer, int flags) { 1098390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1099390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.movePackage(packageName, observer, flags); 1100390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1101390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1102390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1103390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1104390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1105390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1106390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String getInstallerPackageName(String packageName) { 1107390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1108390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getInstallerPackageName(packageName); 1109390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1110390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1111390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1112390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1113390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1114390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1115390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1116390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void deletePackage(String packageName, IPackageDeleteObserver observer, int flags) { 1117390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1118390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.deletePackage(packageName, observer, flags); 1119390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1120390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1121390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1122390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1123390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1124390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void clearApplicationUserData(String packageName, 1125390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageDataObserver observer) { 1126390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1127ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mPM.clearApplicationUserData(packageName, observer, mContext.getUserId()); 1128390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1129390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1130390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1131390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1132390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1133390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void deleteApplicationCacheFiles(String packageName, 1134390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageDataObserver observer) { 1135390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1136390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.deleteApplicationCacheFiles(packageName, observer); 1137390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1138390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1139390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1140390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1141390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1142390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void freeStorageAndNotify(long idealStorageSize, IPackageDataObserver observer) { 1143390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1144390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.freeStorageAndNotify(idealStorageSize, observer); 1145390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1146390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1147390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1148390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1149390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1150390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1151390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void freeStorage(long freeStorageSize, IntentSender pi) { 1152390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1153390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.freeStorage(freeStorageSize, pi); 1154390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1155390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1156390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1157390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1158390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1159390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 11600c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn public void getPackageSizeInfo(String packageName, int userHandle, 11610c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn IPackageStatsObserver observer) { 1162390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 11630c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn mPM.getPackageSizeInfo(packageName, userHandle, observer); 1164390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1165390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1166390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1167390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1168390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1169390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void addPackageToPreferred(String packageName) { 1170390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1171390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.addPackageToPreferred(packageName); 1172390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1173390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1174390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1175390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1176390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1177390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1178390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void removePackageFromPreferred(String packageName) { 1179390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1180390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.removePackageFromPreferred(packageName); 1181390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1182390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1183390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1184390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1185390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1186390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1187390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PackageInfo> getPreferredPackages(int flags) { 1188390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1189390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPreferredPackages(flags); 1190390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1191390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1192390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1193390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return new ArrayList<PackageInfo>(); 1194390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1195390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1196390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1197390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void addPreferredActivity(IntentFilter filter, 1198390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int match, ComponentName[] set, ComponentName activity) { 1199390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1200ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mPM.addPreferredActivity(filter, match, set, activity, mContext.getUserId()); 1201a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } catch (RemoteException e) { 1202a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani // Should never happen! 1203a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } 1204a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } 1205a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani 1206a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani @Override 1207a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani public void addPreferredActivity(IntentFilter filter, int match, 1208a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani ComponentName[] set, ComponentName activity, int userId) { 1209a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani try { 1210a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani mPM.addPreferredActivity(filter, match, set, activity, userId); 1211390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1212390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1213390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1214390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1215390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1216390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1217390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void replacePreferredActivity(IntentFilter filter, 1218390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int match, ComponentName[] set, ComponentName activity) { 1219390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1220390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.replacePreferredActivity(filter, match, set, activity); 1221390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1222390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1223390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1224390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1225390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1226390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1227390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void clearPackagePreferredActivities(String packageName) { 1228390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1229390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.clearPackagePreferredActivities(packageName); 1230390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1231390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1232390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1233390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1234390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1235390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1236390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getPreferredActivities(List<IntentFilter> outFilters, 1237390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick List<ComponentName> outActivities, String packageName) { 1238390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1239390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPreferredActivities(outFilters, outActivities, packageName); 1240390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1241390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1242390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1243390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return 0; 1244390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1245390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1246390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1247390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void setComponentEnabledSetting(ComponentName componentName, 1248390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int newState, int flags) { 1249390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1250ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mPM.setComponentEnabledSetting(componentName, newState, flags, mContext.getUserId()); 1251390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1252390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1253390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1254390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1255390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1256390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1257390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getComponentEnabledSetting(ComponentName componentName) { 1258390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1259ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mPM.getComponentEnabledSetting(componentName, mContext.getUserId()); 1260390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1261390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1262390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1263390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 1264390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1265390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1266390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1267390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void setApplicationEnabledSetting(String packageName, 1268390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int newState, int flags) { 1269390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1270ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mPM.setApplicationEnabledSetting(packageName, newState, flags, mContext.getUserId()); 1271390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1272390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1273390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1274390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1275390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1276390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1277390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getApplicationEnabledSetting(String packageName) { 1278390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1279ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mPM.getApplicationEnabledSetting(packageName, mContext.getUserId()); 1280390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1281390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1282390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1283390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 1284390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1285390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 12860aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root /** 12870aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * @hide 12880aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root */ 12890aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root @Override 12900aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public VerifierDeviceIdentity getVerifierDeviceIdentity() { 12910aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 12920aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return mPM.getVerifierDeviceIdentity(); 12930aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (RemoteException e) { 12940aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // Should never happen! 12950aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 12960aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return null; 12970aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 12980aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1299390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final ContextImpl mContext; 1300390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final IPackageManager mPM; 1301390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1302390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final Object sSync = new Object(); 130339fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy private static HashMap<ResourceName, WeakReference<Drawable.ConstantState>> sIconCache 130439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy = new HashMap<ResourceName, WeakReference<Drawable.ConstantState>>(); 130539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy private static HashMap<ResourceName, WeakReference<CharSequence>> sStringCache 130639fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy = new HashMap<ResourceName, WeakReference<CharSequence>>(); 1307390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick} 1308