ApplicationPackageManager.java revision 98edc951712823dbf5db2b7e9c203a0e98fc616b
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; 53f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackbornimport android.os.UserHandle; 54390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.util.Log; 55a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brownimport android.view.Display; 56390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 57390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.lang.ref.WeakReference; 58390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.ArrayList; 59390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.HashMap; 60390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.Iterator; 61390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.List; 62390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 63390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick/*package*/ 64390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickfinal class ApplicationPackageManager extends PackageManager { 65390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final String TAG = "ApplicationPackageManager"; 66390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final static boolean DEBUG = false; 67390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final static boolean DEBUG_ICONS = false; 68390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 69390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 70390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PackageInfo getPackageInfo(String packageName, int flags) 71390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 72390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 73f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn PackageInfo pi = mPM.getPackageInfo(packageName, flags, UserHandle.myUserId()); 74390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 75390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 76390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 77390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 78390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 79390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 80390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 81390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 82390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 83390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 84390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 85390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] currentToCanonicalPackageNames(String[] names) { 86390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 87390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.currentToCanonicalPackageNames(names); 88390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 89390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 90390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 91390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 92390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 93390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 94390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] canonicalToCurrentPackageNames(String[] names) { 95390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 96390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.canonicalToCurrentPackageNames(names); 97390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 98390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 99390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 100390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 101390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 102390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 103390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Intent getLaunchIntentForPackage(String packageName) { 104390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // First see if the package has an INFO activity; the existence of 105390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // such an activity is implied to be the desired front-door for the 106390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // overall package (such as if it has multiple launcher entries). 107390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent intentToResolve = new Intent(Intent.ACTION_MAIN); 108390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.addCategory(Intent.CATEGORY_INFO); 109390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.setPackage(packageName); 110194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn List<ResolveInfo> ris = queryIntentActivities(intentToResolve, 0); 111390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 112390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Otherwise, try to find a main launcher activity. 113194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn if (ris == null || ris.size() <= 0) { 114390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // reuse the intent instance 115390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.removeCategory(Intent.CATEGORY_INFO); 116390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER); 117390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.setPackage(packageName); 118194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn ris = queryIntentActivities(intentToResolve, 0); 119390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 120194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn if (ris == null || ris.size() <= 0) { 121390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 122390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 123390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent intent = new Intent(intentToResolve); 124390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 125194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn intent.setClassName(ris.get(0).activityInfo.packageName, 126194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn ris.get(0).activityInfo.name); 127390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return intent; 128390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 129390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 130390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 131390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int[] getPackageGids(String packageName) 132390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 133390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 134390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int[] gids = mPM.getPackageGids(packageName); 135390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (gids == null || gids.length > 0) { 136390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return gids; 137390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 138390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 139390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 140390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 141390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 142390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 143390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 144390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 145390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 146390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PermissionInfo getPermissionInfo(String name, int flags) 147390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 148390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 149390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick PermissionInfo pi = mPM.getPermissionInfo(name, flags); 150390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 151390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 152390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 153390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 154390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 155390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 156390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 157390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(name); 158390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 159390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 160390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 161390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) 162390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 163390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 164390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick List<PermissionInfo> pi = mPM.queryPermissionsByGroup(group, flags); 165390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 166390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 167390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 168390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 169390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 170390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 171390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 172390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(group); 173390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 174390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 175390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 176390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PermissionGroupInfo getPermissionGroupInfo(String name, 177390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) throws NameNotFoundException { 178390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 179390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick PermissionGroupInfo pgi = mPM.getPermissionGroupInfo(name, flags); 180390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pgi != null) { 181390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pgi; 182390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 183390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 184390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 185390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 186390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 187390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(name); 188390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 189390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 190390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 191390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { 192390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 193390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getAllPermissionGroups(flags); 194390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 195390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 196390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 197390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 198390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 199390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 200390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ApplicationInfo getApplicationInfo(String packageName, int flags) 201390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 202390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 203f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn ApplicationInfo ai = mPM.getApplicationInfo(packageName, flags, UserHandle.myUserId()); 204390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 205390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 206390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 207390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 208390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 209390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 210390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 211390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 212390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 213390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 214390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 215390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ActivityInfo getActivityInfo(ComponentName className, int flags) 216390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 217390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 218f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn ActivityInfo ai = mPM.getActivityInfo(className, flags, UserHandle.myUserId()); 219390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 220390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 221390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 222390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 223390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 224390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 225390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 226390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 227390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 228390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 229390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 230390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ActivityInfo getReceiverInfo(ComponentName className, int flags) 231390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 232390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 233f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn ActivityInfo ai = mPM.getReceiverInfo(className, flags, UserHandle.myUserId()); 234390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 235390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 236390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 237390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 238390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 239390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 240390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 241390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 242390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 243390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 244390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 245390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ServiceInfo getServiceInfo(ComponentName className, int flags) 246390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 247390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 248f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn ServiceInfo si = mPM.getServiceInfo(className, flags, UserHandle.myUserId()); 249390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (si != null) { 250390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return si; 251390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 252390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 253390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 254390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 255390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 256390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 257390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 258390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 259390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 260390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ProviderInfo getProviderInfo(ComponentName className, int flags) 261390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 262390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 263f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn ProviderInfo pi = mPM.getProviderInfo(className, flags, UserHandle.myUserId()); 264390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 265390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 266390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 267390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 268390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 269390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 270390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 271390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 272390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 273390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 274390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 275390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] getSystemSharedLibraryNames() { 276390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 277390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getSystemSharedLibraryNames(); 278390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 279390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 280390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 281390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 282390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 283390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 284390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public FeatureInfo[] getSystemAvailableFeatures() { 285390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 286390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getSystemAvailableFeatures(); 287390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 288390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 289390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 290390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 291390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 292390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 293390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean hasSystemFeature(String name) { 294390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 295390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.hasSystemFeature(name); 296390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 297390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 298390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 299390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 300390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 301390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 302390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkPermission(String permName, String pkgName) { 303390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 304390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkPermission(permName, pkgName); 305390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 306390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 307390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 308390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 309390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 310390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 311390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean addPermission(PermissionInfo info) { 312390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 313390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.addPermission(info); 314390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 315390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 316390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 317390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 318390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 319390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 320390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean addPermissionAsync(PermissionInfo info) { 321390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 322390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.addPermissionAsync(info); 323390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 324390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 325390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 326390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 327390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 328390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 329390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void removePermission(String name) { 330390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 331390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.removePermission(name); 332390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 333390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 334390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 335390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 336390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 337390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 338e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public void grantPermission(String packageName, String permissionName) { 339e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn try { 340e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn mPM.grantPermission(packageName, permissionName); 341e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } catch (RemoteException e) { 342e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn throw new RuntimeException("Package manager has died", e); 343e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 344e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 345e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 346e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn @Override 347e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public void revokePermission(String packageName, String permissionName) { 348e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn try { 349e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn mPM.revokePermission(packageName, permissionName); 350e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } catch (RemoteException e) { 351e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn throw new RuntimeException("Package manager has died", e); 352e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 353e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 354e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 355e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn @Override 356390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkSignatures(String pkg1, String pkg2) { 357390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 358390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkSignatures(pkg1, pkg2); 359390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 360390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 361390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 362390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 363390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 364390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 365390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkSignatures(int uid1, int uid2) { 366390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 367390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkUidSignatures(uid1, uid2); 368390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 369390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 370390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 371390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 372390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 373390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 374390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] getPackagesForUid(int uid) { 375390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 376390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPackagesForUid(uid); 377390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 378390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 379390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 380390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 381390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 382390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 383390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String getNameForUid(int uid) { 384390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 385390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getNameForUid(uid); 386390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 387390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 388390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 389390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 390390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 391390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 392390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getUidForSharedUser(String sharedUserName) 393390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 394390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 395390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int uid = mPM.getUidForSharedUser(sharedUserName); 396390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if(uid != -1) { 397390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return uid; 398390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 399390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 400390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 401390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 402390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException("No shared userid for user:"+sharedUserName); 403390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 404390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 405e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root @SuppressWarnings("unchecked") 406390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 407390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PackageInfo> getInstalledPackages(int flags) { 408151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani return getInstalledPackages(flags, UserHandle.myUserId()); 409151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani } 410151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani 411151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani /** @hide */ 412151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani @Override 413151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani public List<PackageInfo> getInstalledPackages(int flags, int userId) { 414390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 415e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final List<PackageInfo> packageInfos = new ArrayList<PackageInfo>(); 416e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root PackageInfo lastItem = null; 417e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root ParceledListSlice<PackageInfo> slice; 418e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 419e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root do { 420e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final String lastKey = lastItem != null ? lastItem.packageName : null; 421151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani slice = mPM.getInstalledPackages(flags, lastKey, userId); 422e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root lastItem = slice.populateList(packageInfos, PackageInfo.CREATOR); 423e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root } while (!slice.isLastSlice()); 424e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 425e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root return packageInfos; 426390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 427390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 428390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 429390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 430390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 431e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root @SuppressWarnings("unchecked") 432390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 433390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ApplicationInfo> getInstalledApplications(int flags) { 434f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn int userId = UserHandle.getUserId(Process.myUid()); 435390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 436e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final List<ApplicationInfo> applicationInfos = new ArrayList<ApplicationInfo>(); 437e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root ApplicationInfo lastItem = null; 438e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root ParceledListSlice<ApplicationInfo> slice; 439e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 440e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root do { 441e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root final String lastKey = lastItem != null ? lastItem.packageName : null; 442483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani slice = mPM.getInstalledApplications(flags, lastKey, userId); 443e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root lastItem = slice.populateList(applicationInfos, ApplicationInfo.CREATOR); 444e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root } while (!slice.isLastSlice()); 445e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root 446e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root return applicationInfos; 447390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 448390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 449390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 450390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 451390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 452390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 453390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ResolveInfo resolveActivity(Intent intent, int flags) { 45458d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov return resolveActivityAsUser(intent, flags, UserHandle.myUserId()); 45558d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov } 45658d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov 45758d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov @Override 45858d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public ResolveInfo resolveActivityAsUser(Intent intent, int flags, int userId) { 459390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 460390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.resolveIntent( 461390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 462390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 46358d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov flags, 46458d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov userId); 465390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 466390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 467390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 468390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 469390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 470390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 471390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ResolveInfo> queryIntentActivities(Intent intent, 472390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 47358d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov return queryIntentActivitiesAsUser(intent, flags, UserHandle.myUserId()); 474151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani } 475151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani 476151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani /** @hide Same as above but for a specific user */ 477151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani @Override 47858d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent, 479151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani int flags, int userId) { 480390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 481390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentActivities( 482390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 483390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 484483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 485151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani userId); 486390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 487390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 488390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 489390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 490390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 491390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 492390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ResolveInfo> queryIntentActivityOptions( 493390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName caller, Intent[] specifics, Intent intent, 494390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 495390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final ContentResolver resolver = mContext.getContentResolver(); 496390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 497390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String[] specificTypes = null; 498390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (specifics != null) { 499390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final int N = specifics.length; 500390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick for (int i=0; i<N; i++) { 501390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent sp = specifics[i]; 502390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (sp != null) { 503390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String t = sp.resolveTypeIfNeeded(resolver); 504390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (t != null) { 505390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (specificTypes == null) { 506390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes = new String[N]; 507390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 508390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes[i] = t; 509390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 510390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 511390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 512390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 513390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 514390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 515390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentActivityOptions(caller, specifics, 516390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes, intent, intent.resolveTypeIfNeeded(resolver), 517f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn flags, UserHandle.myUserId()); 518390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 519390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 520390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 521390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 522390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 523f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani /** 524f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani * @hide 525f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani */ 526390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 527f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags, int userId) { 528390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 529390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentReceivers( 530390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 531390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 532483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 533f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani userId); 534390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 535390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 536390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 537390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 538390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 539390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 540f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags) { 541f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani return queryBroadcastReceivers(intent, flags, UserHandle.myUserId()); 542f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani } 543f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani 544f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani @Override 545390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ResolveInfo resolveService(Intent intent, int flags) { 546390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 547390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.resolveService( 548390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 549390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 550483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 551f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn UserHandle.myUserId()); 552390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 553390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 554390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 555390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 556390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 557390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 55858d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId) { 559390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 560390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentServices( 561390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 562390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 563483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 56458d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov userId); 565390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 566390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 567390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 568390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 569390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 570390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 57158d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentServices(Intent intent, int flags) { 57258d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov return queryIntentServicesAsUser(intent, flags, UserHandle.myUserId()); 57358d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov } 57458d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov 57558d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov @Override 576390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ProviderInfo resolveContentProvider(String name, 577390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 578390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 579f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn return mPM.resolveContentProvider(name, flags, UserHandle.myUserId()); 580390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 581390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 582390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 583390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 584390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 585390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 586390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ProviderInfo> queryContentProviders(String processName, 587390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int uid, int flags) { 588390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 589390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryContentProviders(processName, uid, flags); 590390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 591390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 592390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 593390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 594390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 595390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 596390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public InstrumentationInfo getInstrumentationInfo( 597390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName className, int flags) 598390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 599390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 600390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick InstrumentationInfo ii = mPM.getInstrumentationInfo( 601390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick className, flags); 602390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ii != null) { 603390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ii; 604390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 605390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 606390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 607390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 608390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 609390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 610390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 611390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 612390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 613390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<InstrumentationInfo> queryInstrumentation( 614390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String targetPackage, int flags) { 615390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 616390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryInstrumentation(targetPackage, flags); 617390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 618390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 619390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 620390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 621390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 622390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getDrawable(String packageName, int resid, 623390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 624390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName name = new ResourceName(packageName, resid); 625390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Drawable dr = getCachedIcon(name); 626390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (dr != null) { 627390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return dr; 628390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 629390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 630390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 631390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 632390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 633390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 634390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 635390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 636390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 637390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 638390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick dr = r.getDrawable(resid); 639390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (false) { 640390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick RuntimeException e = new RuntimeException("here"); 641390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick e.fillInStackTrace(); 642390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w(TAG, "Getting drawable 0x" + Integer.toHexString(resid) 643390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + " from package " + packageName 644390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ": app scale=" + r.getCompatibilityInfo().applicationScale 645390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ", caller scale=" + mContext.getResources().getCompatibilityInfo().applicationScale, 646390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick e); 647390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 648390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (DEBUG_ICONS) Log.v(TAG, "Getting drawable 0x" 649390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " from " + r 650390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ": " + dr); 651390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick putCachedIcon(name, dr); 652390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return dr; 653390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 654390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving resources for" 655390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 65608f16544176a04a958d403409f98cd0502bb8da3Joe Onorato } catch (Resources.NotFoundException e) { 65708f16544176a04a958d403409f98cd0502bb8da3Joe Onorato Log.w("PackageManager", "Failure retrieving resources for" 65808f16544176a04a958d403409f98cd0502bb8da3Joe Onorato + appInfo.packageName + ": " + e.getMessage()); 659390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 660390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 661390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 662390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving icon 0x" 663390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 664390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 665390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 666390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 667390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 668390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 669390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getActivityIcon(ComponentName activityName) 670390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 671390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityInfo(activityName, 0).loadIcon(this); 672390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 673390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 674390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getActivityIcon(Intent intent) 675390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 676390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (intent.getComponent() != null) { 677390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityIcon(intent.getComponent()); 678390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 679390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 680390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResolveInfo info = resolveActivity( 681390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, PackageManager.MATCH_DEFAULT_ONLY); 682390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (info != null) { 683390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.activityInfo.loadIcon(this); 684390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 685390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 68639fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy throw new NameNotFoundException(intent.toUri(0)); 687390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 688390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 689390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getDefaultActivityIcon() { 690390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return Resources.getSystem().getDrawable( 691390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick com.android.internal.R.drawable.sym_def_app_icon); 692390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 693390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 694390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getApplicationIcon(ApplicationInfo info) { 695390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadIcon(this); 696390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 697390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 698390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getApplicationIcon(String packageName) 699390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 700390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getApplicationIcon(getApplicationInfo(packageName, 0)); 701390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 702390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 703390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 704390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getActivityLogo(ComponentName activityName) 705390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 706390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityInfo(activityName, 0).loadLogo(this); 707390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 708390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 709390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 710390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getActivityLogo(Intent intent) 711390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 712390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (intent.getComponent() != null) { 713390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityLogo(intent.getComponent()); 714390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 715390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 716390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResolveInfo info = resolveActivity( 717390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, PackageManager.MATCH_DEFAULT_ONLY); 718390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (info != null) { 719390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.activityInfo.loadLogo(this); 720390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 721390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 722390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(intent.toUri(0)); 723390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 724390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 725390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 726390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getApplicationLogo(ApplicationInfo info) { 727390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadLogo(this); 728390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 729390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 730390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 731390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getApplicationLogo(String packageName) 732390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 733390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getApplicationLogo(getApplicationInfo(packageName, 0)); 734390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 735390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 736390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForActivity( 737390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName activityName) throws NameNotFoundException { 738390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getResourcesForApplication( 739390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick getActivityInfo(activityName, 0).applicationInfo); 740390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 741390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 742390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForApplication( 743390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo app) throws NameNotFoundException { 744390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (app.packageName.equals("system")) { 745390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mContext.mMainThread.getSystemContext().getResources(); 746390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 747390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = mContext.mMainThread.getTopLevelResources( 748a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown app.uid == Process.myUid() ? app.sourceDir : app.publicSourceDir, 749a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown Display.DEFAULT_DISPLAY, null, mContext.mPackageInfo); 750390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (r != null) { 751390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return r; 752390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 753390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException("Unable to open " + app.publicSourceDir); 754390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 755390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 756390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForApplication( 757390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String appPackageName) throws NameNotFoundException { 758390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getResourcesForApplication( 759390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick getApplicationInfo(appPackageName, 0)); 760390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 761390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 76298edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani /** @hide */ 76398edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani @Override 76498edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani public Resources getResourcesForApplicationAsUser(String appPackageName, int userId) 76598edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throws NameNotFoundException { 76698edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani try { 76798edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani ApplicationInfo ai = mPM.getApplicationInfo(appPackageName, 0, userId); 76898edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani if (ai != null) { 76998edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani return getResourcesForApplication(ai); 77098edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 77198edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } catch (RemoteException e) { 77298edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throw new RuntimeException("Package manager has died", e); 77398edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 77498edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throw new NameNotFoundException("Package " + appPackageName + " doesn't exist"); 77598edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 77698edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani 777390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int mCachedSafeMode = -1; 778390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public boolean isSafeMode() { 779390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 780390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (mCachedSafeMode < 0) { 781390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mCachedSafeMode = mPM.isSafeMode() ? 1 : 0; 782390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 783390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mCachedSafeMode != 0; 784390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 785390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 786390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 787390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 788390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 789390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick static void configurationChanged() { 790390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 791390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sIconCache.clear(); 792390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.clear(); 793390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 794390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 795390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 796390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationPackageManager(ContextImpl context, 797390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageManager pm) { 798390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mContext = context; 799390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM = pm; 800390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 801390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 802390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private Drawable getCachedIcon(ResourceName name) { 803390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 80439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy WeakReference<Drawable.ConstantState> wr = sIconCache.get(name); 805390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (DEBUG_ICONS) Log.v(TAG, "Get cached weak drawable ref for " 806390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + name + ": " + wr); 807390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (wr != null) { // we have the activity 80839fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy Drawable.ConstantState state = wr.get(); 80939fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (state != null) { 81039fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (DEBUG_ICONS) { 81139fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy Log.v(TAG, "Get cached drawable state for " + name + ": " + state); 81239fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy } 81339fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // Note: It's okay here to not use the newDrawable(Resources) variant 81439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // of the API. The ConstantState comes from a drawable that was 81539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // originally created by passing the proper app Resources instance 81639fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // which means the state should already contain the proper 81739fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // resources specific information (like density.) See 81839fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // BitmapDrawable.BitmapState for instance. 81939fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy return state.newDrawable(); 820390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 821390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // our entry has been purged 822390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sIconCache.remove(name); 823390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 824390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 825390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 826390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 827390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 828390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private void putCachedIcon(ResourceName name, Drawable dr) { 829390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 83039fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy sIconCache.put(name, new WeakReference<Drawable.ConstantState>(dr.getConstantState())); 83139fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (DEBUG_ICONS) Log.v(TAG, "Added cached drawable state for " + name + ": " + dr); 832390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 833390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 834390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 83539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy static void handlePackageBroadcast(int cmd, String[] pkgList, boolean hasPkgInfo) { 836390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick boolean immediateGc = false; 837390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (cmd == IApplicationThread.EXTERNAL_STORAGE_UNAVAILABLE) { 838390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick immediateGc = true; 839390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 840390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pkgList != null && (pkgList.length > 0)) { 841390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick boolean needCleanup = false; 842390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick for (String ssp : pkgList) { 843390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 844390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (sIconCache.size() > 0) { 845390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Iterator<ResourceName> it = sIconCache.keySet().iterator(); 846390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick while (it.hasNext()) { 847390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName nm = it.next(); 848390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (nm.packageName.equals(ssp)) { 849390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick //Log.i(TAG, "Removing cached drawable for " + nm); 850390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick it.remove(); 851390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick needCleanup = true; 852390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 853390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 854390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 855390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (sStringCache.size() > 0) { 856390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Iterator<ResourceName> it = sStringCache.keySet().iterator(); 857390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick while (it.hasNext()) { 858390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName nm = it.next(); 859390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (nm.packageName.equals(ssp)) { 860390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick //Log.i(TAG, "Removing cached string for " + nm); 861390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick it.remove(); 862390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick needCleanup = true; 863390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 864390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 865390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 866390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 867390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 868390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (needCleanup || hasPkgInfo) { 869390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (immediateGc) { 870390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Schedule an immediate gc. 871390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Runtime.getRuntime().gc(); 872390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } else { 873390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ActivityThread.currentActivityThread().scheduleGcIdler(); 874390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 875390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 876390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 877390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 878390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 879390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final class ResourceName { 880390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final String packageName; 881390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final int iconId; 882390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 883390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(String _packageName, int _iconId) { 884390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick packageName = _packageName; 885390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick iconId = _iconId; 886390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 887390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 888390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ApplicationInfo aInfo, int _iconId) { 889390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(aInfo.packageName, _iconId); 890390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 891390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 892390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ComponentInfo cInfo, int _iconId) { 893390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(cInfo.applicationInfo.packageName, _iconId); 894390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 895390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 896390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ResolveInfo rInfo, int _iconId) { 897390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(rInfo.activityInfo.applicationInfo.packageName, _iconId); 898390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 899390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 900390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 901390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean equals(Object o) { 902390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (this == o) return true; 903390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (o == null || getClass() != o.getClass()) return false; 904390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 905390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName that = (ResourceName) o; 906390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 907390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (iconId != that.iconId) return false; 908390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return !(packageName != null ? 909390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick !packageName.equals(that.packageName) : that.packageName != null); 910390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 911390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 912390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 913390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 914390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int hashCode() { 915390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int result; 916390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick result = packageName.hashCode(); 917390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick result = 31 * result + iconId; 918390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return result; 919390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 920390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 921390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 922390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String toString() { 923390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return "{ResourceName " + packageName + " / " + iconId + "}"; 924390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 925390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 926390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 927390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private CharSequence getCachedString(ResourceName name) { 928390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 929390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick WeakReference<CharSequence> wr = sStringCache.get(name); 930390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (wr != null) { // we have the activity 931390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick CharSequence cs = wr.get(); 932390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (cs != null) { 933390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return cs; 934390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 935390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // our entry has been purged 936390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.remove(name); 937390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 938390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 939390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 940390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 941390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 942390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private void putCachedString(ResourceName name, CharSequence cs) { 943390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 944390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.put(name, new WeakReference<CharSequence>(cs)); 945390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 946390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 947390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 948390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 949390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public CharSequence getText(String packageName, int resid, 950390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 951390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName name = new ResourceName(packageName, resid); 952390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick CharSequence text = getCachedString(name); 953390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (text != null) { 954390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return text; 955390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 956390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 957390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 958390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 959390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 960390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 961390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 962390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 963390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 964390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 965390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick text = r.getText(resid); 966390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick putCachedString(name, text); 967390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return text; 968390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 969390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving resources for" 970390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 971390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 972390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 973390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 974390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving text 0x" 975390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 976390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 977390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 978390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 979390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 980390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 981390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 982390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public XmlResourceParser getXml(String packageName, int resid, 983390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 984390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 985390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 986390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 987390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 988390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 989390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 990390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 991390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 992390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 993390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return r.getXml(resid); 994390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 995390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 996390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 997390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving xml 0x" 998390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 999390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 1000390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 10013fa51e3430e3bf902ae4f2d72dfb956103b6bd2dAlon Albert Log.w("PackageManager", "Failure retrieving resources for " 1002390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 1003390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1004390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1005390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1006390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1007390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1008390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public CharSequence getApplicationLabel(ApplicationInfo info) { 1009390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadLabel(this); 1010390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1011390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1012390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1013390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags, 1014390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String installerPackageName) { 1015390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1016390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.installPackage(packageURI, observer, flags, installerPackageName); 1017390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1018390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1019390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1020390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1021390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1022390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 10235ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer, 10245ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root int flags, String installerPackageName, Uri verificationURI, 1025e1d7c711df3e3a2d2f195457882aa4ddb5626167Rich Cannings ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) { 10265ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root try { 10275ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root mPM.installPackageWithVerification(packageURI, observer, flags, installerPackageName, 1028e1d7c711df3e3a2d2f195457882aa4ddb5626167Rich Cannings verificationURI, manifestDigest, encryptionParams); 10295ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } catch (RemoteException e) { 10305ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root // Should never happen! 10315ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10325ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10335ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root 10345ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root @Override 1035706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void installPackageWithVerificationAndEncryption(Uri packageURI, 1036706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings IPackageInstallObserver observer, int flags, String installerPackageName, 1037706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) { 1038706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings try { 1039706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings mPM.installPackageWithVerificationAndEncryption(packageURI, observer, flags, 1040706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings installerPackageName, verificationParams, encryptionParams); 1041706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } catch (RemoteException e) { 1042706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings // Should never happen! 1043706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 1044706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 1045706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 1046706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings @Override 10477767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn public int installExistingPackage(String packageName) 10487767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throws NameNotFoundException { 10497767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn try { 10507767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn int res = mPM.installExistingPackage(packageName); 10517767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn if (res == INSTALL_FAILED_INVALID_URI) { 10527767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throw new NameNotFoundException("Package " + packageName + " doesn't exist"); 10537767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10547767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn return res; 10557767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } catch (RemoteException e) { 10567767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn // Should never happen! 10577767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throw new NameNotFoundException("Package " + packageName + " doesn't exist"); 10587767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10597767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10607767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn 10617767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn @Override 10623a9b5fbb97e65019abec97f172b4cbf2100d1225Kenny Root public void verifyPendingInstall(int id, int response) { 10635ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root try { 10643a9b5fbb97e65019abec97f172b4cbf2100d1225Kenny Root mPM.verifyPendingInstall(id, response); 10655ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } catch (RemoteException e) { 10665ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root // Should never happen! 10675ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10685ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10695ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root 10705ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root @Override 1071d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings public void extendVerificationTimeout(int id, int verificationCodeAtTimeout, 1072d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings long millisecondsToDelay) { 1073d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings try { 1074d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings mPM.extendVerificationTimeout(id, verificationCodeAtTimeout, millisecondsToDelay); 1075d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } catch (RemoteException e) { 1076d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings // Should never happen! 1077d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } 1078d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } 1079d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings 1080d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings @Override 1081880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn public void setInstallerPackageName(String targetPackage, 1082880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn String installerPackageName) { 1083880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn try { 1084880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn mPM.setInstallerPackageName(targetPackage, installerPackageName); 1085880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } catch (RemoteException e) { 1086880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn // Should never happen! 1087880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } 1088880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } 1089880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn 1090880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn @Override 1091390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void movePackage(String packageName, IPackageMoveObserver observer, int flags) { 1092390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1093390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.movePackage(packageName, observer, flags); 1094390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1095390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1096390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1097390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1098390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1099390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1100390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String getInstallerPackageName(String packageName) { 1101390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1102390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getInstallerPackageName(packageName); 1103390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1104390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1105390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1106390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1107390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1108390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1109390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1110390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void deletePackage(String packageName, IPackageDeleteObserver observer, int flags) { 1111390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1112390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.deletePackage(packageName, observer, flags); 1113390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1114390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1115390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1116390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1117390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1118390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void clearApplicationUserData(String packageName, 1119390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageDataObserver observer) { 1120390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1121f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn mPM.clearApplicationUserData(packageName, observer, UserHandle.myUserId()); 1122390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1123390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1124390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1125390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1126390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1127390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void deleteApplicationCacheFiles(String packageName, 1128390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageDataObserver observer) { 1129390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1130390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.deleteApplicationCacheFiles(packageName, observer); 1131390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1132390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1133390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1134390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1135390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1136390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void freeStorageAndNotify(long idealStorageSize, IPackageDataObserver observer) { 1137390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1138390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.freeStorageAndNotify(idealStorageSize, observer); 1139390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1140390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1141390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1142390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1143390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1144390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1145390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void freeStorage(long freeStorageSize, IntentSender pi) { 1146390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1147390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.freeStorage(freeStorageSize, pi); 1148390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1149390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1150390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1151390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1152390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1153390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 11540c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn public void getPackageSizeInfo(String packageName, int userHandle, 11550c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn IPackageStatsObserver observer) { 1156390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 11570c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn mPM.getPackageSizeInfo(packageName, userHandle, observer); 1158390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1159390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1160390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1161390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1162390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1163390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void addPackageToPreferred(String packageName) { 1164390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1165390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.addPackageToPreferred(packageName); 1166390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1167390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1168390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1169390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1170390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1171390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1172390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void removePackageFromPreferred(String packageName) { 1173390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1174390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.removePackageFromPreferred(packageName); 1175390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1176390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1177390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1178390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1179390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1180390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1181390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PackageInfo> getPreferredPackages(int flags) { 1182390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1183390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPreferredPackages(flags); 1184390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1185390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1186390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1187390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return new ArrayList<PackageInfo>(); 1188390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1189390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1190390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1191390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void addPreferredActivity(IntentFilter filter, 1192390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int match, ComponentName[] set, ComponentName activity) { 1193390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1194a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani mPM.addPreferredActivity(filter, match, set, activity, UserHandle.myUserId()); 1195a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } catch (RemoteException e) { 1196a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani // Should never happen! 1197a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } 1198a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } 1199a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani 1200a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani @Override 1201a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani public void addPreferredActivity(IntentFilter filter, int match, 1202a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani ComponentName[] set, ComponentName activity, int userId) { 1203a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani try { 1204a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani mPM.addPreferredActivity(filter, match, set, activity, userId); 1205390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1206390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1207390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1208390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1209390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1210390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1211390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void replacePreferredActivity(IntentFilter filter, 1212390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int match, ComponentName[] set, ComponentName activity) { 1213390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1214390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.replacePreferredActivity(filter, match, set, activity); 1215390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1216390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1217390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1218390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1219390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1220390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1221390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void clearPackagePreferredActivities(String packageName) { 1222390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1223390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.clearPackagePreferredActivities(packageName); 1224390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1225390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1226390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1227390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1228390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1229390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1230390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getPreferredActivities(List<IntentFilter> outFilters, 1231390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick List<ComponentName> outActivities, String packageName) { 1232390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1233390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPreferredActivities(outFilters, outActivities, packageName); 1234390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1235390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1236390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1237390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return 0; 1238390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1239390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1240390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1241390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void setComponentEnabledSetting(ComponentName componentName, 1242390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int newState, int flags) { 1243390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1244f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn mPM.setComponentEnabledSetting(componentName, newState, flags, UserHandle.myUserId()); 1245390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1246390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1247390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1248390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1249390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1250390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1251390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getComponentEnabledSetting(ComponentName componentName) { 1252390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1253f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn return mPM.getComponentEnabledSetting(componentName, UserHandle.myUserId()); 1254390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1255390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1256390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1257390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 1258390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1259390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1260390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1261390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void setApplicationEnabledSetting(String packageName, 1262390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int newState, int flags) { 1263390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1264f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn mPM.setApplicationEnabledSetting(packageName, newState, flags, UserHandle.myUserId()); 1265390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1266390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1267390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1268390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1269390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1270390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1271390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getApplicationEnabledSetting(String packageName) { 1272390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1273f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8Dianne Hackborn return mPM.getApplicationEnabledSetting(packageName, UserHandle.myUserId()); 1274390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1275390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1276390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1277390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 1278390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1279390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 12800aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root /** 12810aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * @hide 12820aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root */ 12830aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root @Override 12840aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public VerifierDeviceIdentity getVerifierDeviceIdentity() { 12850aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 12860aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return mPM.getVerifierDeviceIdentity(); 12870aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (RemoteException e) { 12880aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // Should never happen! 12890aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 12900aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return null; 12910aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 12920aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1293390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final ContextImpl mContext; 1294390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final IPackageManager mPM; 1295390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1296390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final Object sSync = new Object(); 129739fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy private static HashMap<ResourceName, WeakReference<Drawable.ConstantState>> sIconCache 129839fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy = new HashMap<ResourceName, WeakReference<Drawable.ConstantState>>(); 129939fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy private static HashMap<ResourceName, WeakReference<CharSequence>> sStringCache 130039fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy = new HashMap<ResourceName, WeakReference<CharSequence>>(); 1301390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick} 1302