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; 5367df64b3a48a8157d08a98fa90135d0ac0ee621cAmith Yamasaniimport android.os.UserHandle; 54add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackbornimport android.util.ArrayMap; 55390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport android.util.Log; 56a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brownimport android.view.Display; 57390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 58390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.lang.ref.WeakReference; 59390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.ArrayList; 60390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.HashMap; 61390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.Iterator; 62390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickimport java.util.List; 63390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 64390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick/*package*/ 65390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrickfinal class ApplicationPackageManager extends PackageManager { 66390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final String TAG = "ApplicationPackageManager"; 67390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final static boolean DEBUG = false; 68390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final static boolean DEBUG_ICONS = false; 69390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 70390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 71390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PackageInfo getPackageInfo(String packageName, int flags) 72390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 73390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 74ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey PackageInfo pi = mPM.getPackageInfo(packageName, flags, mContext.getUserId()); 75390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 76390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 77390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 78390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 79390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 80390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 81390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 82390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 83390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 84390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 85390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 86390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] currentToCanonicalPackageNames(String[] names) { 87390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 88390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.currentToCanonicalPackageNames(names); 89390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 90390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 91390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 92390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 93390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 94390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 95390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] canonicalToCurrentPackageNames(String[] names) { 96390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 97390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.canonicalToCurrentPackageNames(names); 98390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 99390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 100390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 101390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 102390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 103390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 104390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Intent getLaunchIntentForPackage(String packageName) { 105390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // First see if the package has an INFO activity; the existence of 106390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // such an activity is implied to be the desired front-door for the 107390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // overall package (such as if it has multiple launcher entries). 108390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent intentToResolve = new Intent(Intent.ACTION_MAIN); 109390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.addCategory(Intent.CATEGORY_INFO); 110390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.setPackage(packageName); 111194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn List<ResolveInfo> ris = queryIntentActivities(intentToResolve, 0); 112390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 113390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Otherwise, try to find a main launcher activity. 114194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn if (ris == null || ris.size() <= 0) { 115390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // reuse the intent instance 116390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.removeCategory(Intent.CATEGORY_INFO); 117390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER); 118390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intentToResolve.setPackage(packageName); 119194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn ris = queryIntentActivities(intentToResolve, 0); 120390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 121194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn if (ris == null || ris.size() <= 0) { 122390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 123390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 124390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent intent = new Intent(intentToResolve); 125390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 126194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn intent.setClassName(ris.get(0).activityInfo.packageName, 127194157638ae59418b9d9cb4d73f7e285f59bc579Dianne Hackborn ris.get(0).activityInfo.name); 128390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return intent; 129390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 130390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 131390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 132390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int[] getPackageGids(String packageName) 133390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 134390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 135390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int[] gids = mPM.getPackageGids(packageName); 136390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (gids == null || gids.length > 0) { 137390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return gids; 138390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 139390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 140390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 141390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 142390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 143390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 144390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 145390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 146390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 147a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn public int getPackageUid(String packageName, int userHandle) 148a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn throws NameNotFoundException { 149a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn try { 150a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn int uid = mPM.getPackageUid(packageName, userHandle); 151a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn if (uid >= 0) { 152a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn return uid; 153a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn } 154a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn } catch (RemoteException e) { 155a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn throw new RuntimeException("Package manager has died", e); 156a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn } 157a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn 158a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn throw new NameNotFoundException(packageName); 159a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn } 160a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn 161a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn @Override 162390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PermissionInfo getPermissionInfo(String name, int flags) 163390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 164390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 165390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick PermissionInfo pi = mPM.getPermissionInfo(name, flags); 166390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 167390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 168390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 169390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 170390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 171390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 172390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 173390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(name); 174390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 175390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 176390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 177390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) 178390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 179390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 180390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick List<PermissionInfo> pi = mPM.queryPermissionsByGroup(group, flags); 181390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 182390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 183390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 184390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 185390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 186390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 187390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 188390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(group); 189390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 190390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 191390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 192390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public PermissionGroupInfo getPermissionGroupInfo(String name, 193390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) throws NameNotFoundException { 194390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 195390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick PermissionGroupInfo pgi = mPM.getPermissionGroupInfo(name, flags); 196390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pgi != null) { 197390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pgi; 198390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 199390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 200390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 201390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 202390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 203390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(name); 204390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 205390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 206390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 207390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { 208390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 209390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getAllPermissionGroups(flags); 210390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 211390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 212390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 213390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 214390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 215390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 216390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ApplicationInfo getApplicationInfo(String packageName, int flags) 217390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 218390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 219ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ApplicationInfo ai = mPM.getApplicationInfo(packageName, flags, mContext.getUserId()); 220390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 221390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 222390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 223390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 224390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 225390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 226390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 227390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(packageName); 228390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 229390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 230390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 231390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ActivityInfo getActivityInfo(ComponentName className, int flags) 232390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 233390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 234ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ActivityInfo ai = mPM.getActivityInfo(className, flags, mContext.getUserId()); 235390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 236390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 237390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 238390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 239390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 240390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 241390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 242390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 243390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 244390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 245390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 246390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ActivityInfo getReceiverInfo(ComponentName className, int flags) 247390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 248390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 249ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ActivityInfo ai = mPM.getReceiverInfo(className, flags, mContext.getUserId()); 250390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ai != null) { 251390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ai; 252390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 253390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 254390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 255390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 256390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 257390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 258390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 259390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 260390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 261390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ServiceInfo getServiceInfo(ComponentName className, int flags) 262390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 263390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 264ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ServiceInfo si = mPM.getServiceInfo(className, flags, mContext.getUserId()); 265390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (si != null) { 266390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return si; 267390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 268390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 269390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 270390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 271390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 272390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 273390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 274390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 275390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 276390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ProviderInfo getProviderInfo(ComponentName className, int flags) 277390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 278390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 279ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey ProviderInfo pi = mPM.getProviderInfo(className, flags, mContext.getUserId()); 280390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pi != null) { 281390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return pi; 282390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 283390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 284390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 285390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 286390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 287390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 288390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 289390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 290390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 291390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] getSystemSharedLibraryNames() { 292390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 293390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getSystemSharedLibraryNames(); 294390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 295390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 296390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 297390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 298390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 299390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 300390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public FeatureInfo[] getSystemAvailableFeatures() { 301390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 302390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getSystemAvailableFeatures(); 303390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 304390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 305390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 306390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 307390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 308390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 309390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean hasSystemFeature(String name) { 310390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 311390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.hasSystemFeature(name); 312390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 313390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 314390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 315390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 316390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 317390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 318390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkPermission(String permName, String pkgName) { 319390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 320390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkPermission(permName, pkgName); 321390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 322390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 323390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 324390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 325390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 326390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 327390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean addPermission(PermissionInfo info) { 328390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 329390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.addPermission(info); 330390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 331390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 332390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 333390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 334390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 335390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 336390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean addPermissionAsync(PermissionInfo info) { 337390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 338390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.addPermissionAsync(info); 339390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 340390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 341390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 342390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 343390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 344390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 345390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void removePermission(String name) { 346390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 347390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.removePermission(name); 348390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 349390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 350390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 351390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 352390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 353390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 354e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public void grantPermission(String packageName, String permissionName) { 355e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn try { 356e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn mPM.grantPermission(packageName, permissionName); 357e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } catch (RemoteException e) { 358e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn throw new RuntimeException("Package manager has died", e); 359e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 360e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 361e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 362e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn @Override 363e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public void revokePermission(String packageName, String permissionName) { 364e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn try { 365e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn mPM.revokePermission(packageName, permissionName); 366e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } catch (RemoteException e) { 367e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn throw new RuntimeException("Package manager has died", e); 368e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 369e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn } 370e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 371e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn @Override 372390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkSignatures(String pkg1, String pkg2) { 373390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 374390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkSignatures(pkg1, pkg2); 375390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 376390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 377390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 378390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 379390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 380390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 381390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int checkSignatures(int uid1, int uid2) { 382390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 383390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.checkUidSignatures(uid1, uid2); 384390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 385390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 386390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 387390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 388390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 389390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 390390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String[] getPackagesForUid(int uid) { 391390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 392390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPackagesForUid(uid); 393390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 394390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 395390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 396390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 397390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 398390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 399390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String getNameForUid(int uid) { 400390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 401390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getNameForUid(uid); 402390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 403390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 404390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 405390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 406390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 407390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 408390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getUidForSharedUser(String sharedUserName) 409390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 410390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 411390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int uid = mPM.getUidForSharedUser(sharedUserName); 412390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if(uid != -1) { 413390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return uid; 414390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 415390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 416390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 417390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 418390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException("No shared userid for user:"+sharedUserName); 419390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 420390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 421e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root @SuppressWarnings("unchecked") 422390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 423390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PackageInfo> getInstalledPackages(int flags) { 424ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return getInstalledPackages(flags, mContext.getUserId()); 425151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani } 426151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani 427151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani /** @hide */ 428151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani @Override 429151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani public List<PackageInfo> getInstalledPackages(int flags, int userId) { 430390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 431d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn ParceledListSlice<PackageInfo> slice = mPM.getInstalledPackages(flags, userId); 432d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn return slice.getList(); 433390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 434390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 435390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 436390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 437390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 438e6cd0c747e76723bc51a23925c239ae10f9d3b5cKenny Root @SuppressWarnings("unchecked") 439390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 440e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn public List<PackageInfo> getPackagesHoldingPermissions( 441e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn String[] permissions, int flags) { 442e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn final int userId = mContext.getUserId(); 443e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn try { 444d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn ParceledListSlice<PackageInfo> slice = mPM.getPackagesHoldingPermissions( 445d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn permissions, flags, userId); 446d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn return slice.getList(); 447e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn } catch (RemoteException e) { 448e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn throw new RuntimeException("Package manager has died", e); 449e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn } 450e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn } 451e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn 452e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn @SuppressWarnings("unchecked") 453e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn @Override 454390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ApplicationInfo> getInstalledApplications(int flags) { 455ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey final int userId = mContext.getUserId(); 456390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 457d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn ParceledListSlice<ApplicationInfo> slice = mPM.getInstalledApplications(flags, userId); 458d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn return slice.getList(); 459390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 460390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 461390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 462390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 463390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 464390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 465390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ResolveInfo resolveActivity(Intent intent, int flags) { 466ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return resolveActivityAsUser(intent, flags, mContext.getUserId()); 46758d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov } 46858d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov 46958d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov @Override 47058d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public ResolveInfo resolveActivityAsUser(Intent intent, int flags, int userId) { 471390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 472390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.resolveIntent( 473390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 474390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 47558d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov flags, 47658d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov userId); 477390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 478390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 479390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 480390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 481390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 482390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 483390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ResolveInfo> queryIntentActivities(Intent intent, 484390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 485ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return queryIntentActivitiesAsUser(intent, flags, mContext.getUserId()); 486151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani } 487151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani 488151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani /** @hide Same as above but for a specific user */ 489151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani @Override 49058d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent, 491151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani int flags, int userId) { 492390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 493390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentActivities( 494390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 495390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 496483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 497151ec4c9f8ca34625733730a4551a23eb97cda23Amith Yamasani userId); 498390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 499390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 500390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 501390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 502390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 503390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 504390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ResolveInfo> queryIntentActivityOptions( 505390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName caller, Intent[] specifics, Intent intent, 506390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 507390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final ContentResolver resolver = mContext.getContentResolver(); 508390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 509390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String[] specificTypes = null; 510390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (specifics != null) { 511390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final int N = specifics.length; 512390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick for (int i=0; i<N; i++) { 513390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Intent sp = specifics[i]; 514390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (sp != null) { 515390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String t = sp.resolveTypeIfNeeded(resolver); 516390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (t != null) { 517390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (specificTypes == null) { 518390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes = new String[N]; 519390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 520390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes[i] = t; 521390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 522390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 523390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 524390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 525390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 526390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 527390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentActivityOptions(caller, specifics, 528390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick specificTypes, intent, intent.resolveTypeIfNeeded(resolver), 529ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey flags, mContext.getUserId()); 530390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 531390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 532390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 533390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 534390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 535f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani /** 536f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani * @hide 537f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani */ 538390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 539f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags, int userId) { 540390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 541390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentReceivers( 542390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 543390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 544483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 545f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani userId); 546390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 547390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 548390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 549390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 550390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 551390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 552f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags) { 553ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return queryBroadcastReceivers(intent, flags, mContext.getUserId()); 554f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani } 555f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani 556f203aeef993b0f4ce65c9630d06bbd50a504e89fAmith Yamasani @Override 557390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ResolveInfo resolveService(Intent intent, int flags) { 558390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 559390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.resolveService( 560390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 561390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 562483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 563ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mContext.getUserId()); 564390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 565390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 566390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 567390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 568390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 569390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 57058d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId) { 571390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 572390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryIntentServices( 573390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, 574390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent.resolveTypeIfNeeded(mContext.getContentResolver()), 575483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani flags, 57658d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov userId); 577390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 578390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 579390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 580390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 581390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 582390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 58358d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov public List<ResolveInfo> queryIntentServices(Intent intent, int flags) { 584ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return queryIntentServicesAsUser(intent, flags, mContext.getUserId()); 58558d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov } 58658d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov 58758d37b55bd228032355360ea3303e46a804e0516Svetoslav Ganov @Override 58885f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey public List<ResolveInfo> queryIntentContentProvidersAsUser( 58985f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey Intent intent, int flags, int userId) { 59085f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey try { 59185f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey return mPM.queryIntentContentProviders(intent, 59285f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey intent.resolveTypeIfNeeded(mContext.getContentResolver()), flags, userId); 59385f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey } catch (RemoteException e) { 59485f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey throw new RuntimeException("Package manager has died", e); 59585f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey } 59685f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey } 59785f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey 59885f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey @Override 59985f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { 60085f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey return queryIntentContentProvidersAsUser(intent, flags, mContext.getUserId()); 60185f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey } 60285f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey 60385f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey @Override 604390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public ProviderInfo resolveContentProvider(String name, 605390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int flags) { 606390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 607ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mPM.resolveContentProvider(name, flags, mContext.getUserId()); 608390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 609390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 610390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 611390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 612390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 613390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 614390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<ProviderInfo> queryContentProviders(String processName, 615390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int uid, int flags) { 616390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 617390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryContentProviders(processName, uid, flags); 618390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 619390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 620390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 621390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 622390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 623390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 624390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public InstrumentationInfo getInstrumentationInfo( 625390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName className, int flags) 626390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 627390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 628390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick InstrumentationInfo ii = mPM.getInstrumentationInfo( 629390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick className, flags); 630390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (ii != null) { 631390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return ii; 632390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 633390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 634390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 635390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 636390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 637390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(className.toString()); 638390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 639390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 640390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 641390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<InstrumentationInfo> queryInstrumentation( 642390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String targetPackage, int flags) { 643390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 644390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.queryInstrumentation(targetPackage, flags); 645390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 646390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 647390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 648390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 649390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 650390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getDrawable(String packageName, int resid, 651390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 652390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName name = new ResourceName(packageName, resid); 653390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Drawable dr = getCachedIcon(name); 654390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (dr != null) { 655390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return dr; 656390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 657390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 658390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 659390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 660390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 661390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 662390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 663390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 664390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 665390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 666390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick dr = r.getDrawable(resid); 667390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (false) { 668390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick RuntimeException e = new RuntimeException("here"); 669390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick e.fillInStackTrace(); 670390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w(TAG, "Getting drawable 0x" + Integer.toHexString(resid) 671390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + " from package " + packageName 672390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ": app scale=" + r.getCompatibilityInfo().applicationScale 673390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ", caller scale=" + mContext.getResources().getCompatibilityInfo().applicationScale, 674390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick e); 675390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 676390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (DEBUG_ICONS) Log.v(TAG, "Getting drawable 0x" 677390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " from " + r 678390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + ": " + dr); 679390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick putCachedIcon(name, dr); 680390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return dr; 681390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 682390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving resources for" 683390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 68408f16544176a04a958d403409f98cd0502bb8da3Joe Onorato } catch (Resources.NotFoundException e) { 68508f16544176a04a958d403409f98cd0502bb8da3Joe Onorato Log.w("PackageManager", "Failure retrieving resources for" 68608f16544176a04a958d403409f98cd0502bb8da3Joe Onorato + appInfo.packageName + ": " + e.getMessage()); 687390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 688390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 689390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 690390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving icon 0x" 691390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 692390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 693390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 694390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 695390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 696390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 697390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getActivityIcon(ComponentName activityName) 698390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 699390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityInfo(activityName, 0).loadIcon(this); 700390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 701390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 702390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getActivityIcon(Intent intent) 703390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 704390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (intent.getComponent() != null) { 705390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityIcon(intent.getComponent()); 706390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 707390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 708390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResolveInfo info = resolveActivity( 709390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, PackageManager.MATCH_DEFAULT_ONLY); 710390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (info != null) { 711390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.activityInfo.loadIcon(this); 712390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 713390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 71439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy throw new NameNotFoundException(intent.toUri(0)); 715390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 716390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 717390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getDefaultActivityIcon() { 718390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return Resources.getSystem().getDrawable( 719390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick com.android.internal.R.drawable.sym_def_app_icon); 720390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 721390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 722390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getApplicationIcon(ApplicationInfo info) { 723390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadIcon(this); 724390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 725390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 726390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Drawable getApplicationIcon(String packageName) 727390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 728390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getApplicationIcon(getApplicationInfo(packageName, 0)); 729390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 730390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 731390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 732390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getActivityLogo(ComponentName activityName) 733390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 734390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityInfo(activityName, 0).loadLogo(this); 735390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 736390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 737390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 738390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getActivityLogo(Intent intent) 739390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 740390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (intent.getComponent() != null) { 741390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getActivityLogo(intent.getComponent()); 742390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 743390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 744390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResolveInfo info = resolveActivity( 745390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick intent, PackageManager.MATCH_DEFAULT_ONLY); 746390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (info != null) { 747390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.activityInfo.loadLogo(this); 748390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 749390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 750390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException(intent.toUri(0)); 751390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 752390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 753390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 754390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getApplicationLogo(ApplicationInfo info) { 755390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadLogo(this); 756390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 757390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 758390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 759390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public Drawable getApplicationLogo(String packageName) 760390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throws NameNotFoundException { 761390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getApplicationLogo(getApplicationInfo(packageName, 0)); 762390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 763390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 764390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForActivity( 765390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ComponentName activityName) throws NameNotFoundException { 766390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getResourcesForApplication( 767390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick getActivityInfo(activityName, 0).applicationInfo); 768390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 769390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 770390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForApplication( 771390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo app) throws NameNotFoundException { 772390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (app.packageName.equals("system")) { 773390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mContext.mMainThread.getSystemContext().getResources(); 774390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 775390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = mContext.mMainThread.getTopLevelResources( 776a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown app.uid == Process.myUid() ? app.sourceDir : app.publicSourceDir, 777a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown Display.DEFAULT_DISPLAY, null, mContext.mPackageInfo); 778390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (r != null) { 779390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return r; 780390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 781390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new NameNotFoundException("Unable to open " + app.publicSourceDir); 782390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 783390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 784390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public Resources getResourcesForApplication( 785390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String appPackageName) throws NameNotFoundException { 786390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return getResourcesForApplication( 787390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick getApplicationInfo(appPackageName, 0)); 788390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 789390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 79098edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani /** @hide */ 79198edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani @Override 79298edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani public Resources getResourcesForApplicationAsUser(String appPackageName, int userId) 79398edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throws NameNotFoundException { 794ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey if (userId < 0) { 795ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey throw new IllegalArgumentException( 796ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey "Call does not support special user #" + userId); 797ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey } 798ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey if ("system".equals(appPackageName)) { 799ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mContext.mMainThread.getSystemContext().getResources(); 800ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey } 80198edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani try { 80298edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani ApplicationInfo ai = mPM.getApplicationInfo(appPackageName, 0, userId); 80398edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani if (ai != null) { 80498edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani return getResourcesForApplication(ai); 80598edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 80698edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } catch (RemoteException e) { 80798edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throw new RuntimeException("Package manager has died", e); 80898edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 80998edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani throw new NameNotFoundException("Package " + appPackageName + " doesn't exist"); 81098edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani } 81198edc951712823dbf5db2b7e9c203a0e98fc616bAmith Yamasani 812390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int mCachedSafeMode = -1; 813390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override public boolean isSafeMode() { 814390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 815390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (mCachedSafeMode < 0) { 816390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mCachedSafeMode = mPM.isSafeMode() ? 1 : 0; 817390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 818390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mCachedSafeMode != 0; 819390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 820390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick throw new RuntimeException("Package manager has died", e); 821390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 822390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 823390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 824390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick static void configurationChanged() { 825390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 826390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sIconCache.clear(); 827390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.clear(); 828390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 829390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 830390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 831390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationPackageManager(ContextImpl context, 832390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageManager pm) { 833390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mContext = context; 834390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM = pm; 835390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 836390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 837390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private Drawable getCachedIcon(ResourceName name) { 838390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 83939fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy WeakReference<Drawable.ConstantState> wr = sIconCache.get(name); 840390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (DEBUG_ICONS) Log.v(TAG, "Get cached weak drawable ref for " 841390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + name + ": " + wr); 842390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (wr != null) { // we have the activity 84339fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy Drawable.ConstantState state = wr.get(); 84439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (state != null) { 84539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (DEBUG_ICONS) { 84639fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy Log.v(TAG, "Get cached drawable state for " + name + ": " + state); 84739fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy } 84839fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // Note: It's okay here to not use the newDrawable(Resources) variant 84939fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // of the API. The ConstantState comes from a drawable that was 85039fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // originally created by passing the proper app Resources instance 85139fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // which means the state should already contain the proper 85239fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // resources specific information (like density.) See 85339fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy // BitmapDrawable.BitmapState for instance. 85439fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy return state.newDrawable(); 855390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 856390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // our entry has been purged 857390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sIconCache.remove(name); 858390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 859390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 860390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 861390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 862390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 863390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private void putCachedIcon(ResourceName name, Drawable dr) { 864390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 86539fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy sIconCache.put(name, new WeakReference<Drawable.ConstantState>(dr.getConstantState())); 86639fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy if (DEBUG_ICONS) Log.v(TAG, "Added cached drawable state for " + name + ": " + dr); 867390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 868390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 869390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 87039fe17c8fb764a9233182cc408e37b1a59182b00Romain Guy static void handlePackageBroadcast(int cmd, String[] pkgList, boolean hasPkgInfo) { 871390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick boolean immediateGc = false; 872390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (cmd == IApplicationThread.EXTERNAL_STORAGE_UNAVAILABLE) { 873390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick immediateGc = true; 874390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 875390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (pkgList != null && (pkgList.length > 0)) { 876390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick boolean needCleanup = false; 877390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick for (String ssp : pkgList) { 878390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 879add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn for (int i=sIconCache.size()-1; i>=0; i--) { 880add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn ResourceName nm = sIconCache.keyAt(i); 881add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn if (nm.packageName.equals(ssp)) { 882add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn //Log.i(TAG, "Removing cached drawable for " + nm); 883add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn sIconCache.removeAt(i); 884add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn needCleanup = true; 885390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 886390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 887add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn for (int i=sStringCache.size()-1; i>=0; i--) { 888add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn ResourceName nm = sStringCache.keyAt(i); 889add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn if (nm.packageName.equals(ssp)) { 890add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn //Log.i(TAG, "Removing cached string for " + nm); 891add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn sStringCache.removeAt(i); 892add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn needCleanup = true; 893390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 894390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 895390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 896390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 897390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (needCleanup || hasPkgInfo) { 898390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (immediateGc) { 899390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Schedule an immediate gc. 900390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Runtime.getRuntime().gc(); 901390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } else { 902390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ActivityThread.currentActivityThread().scheduleGcIdler(); 903390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 904390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 905390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 906390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 907390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 908390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final class ResourceName { 909390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final String packageName; 910390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick final int iconId; 911390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 912390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(String _packageName, int _iconId) { 913390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick packageName = _packageName; 914390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick iconId = _iconId; 915390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 916390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 917390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ApplicationInfo aInfo, int _iconId) { 918390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(aInfo.packageName, _iconId); 919390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 920390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 921390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ComponentInfo cInfo, int _iconId) { 922390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(cInfo.applicationInfo.packageName, _iconId); 923390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 924390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 925390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName(ResolveInfo rInfo, int _iconId) { 926390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick this(rInfo.activityInfo.applicationInfo.packageName, _iconId); 927390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 928390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 929390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 930390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public boolean equals(Object o) { 931390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (this == o) return true; 932390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (o == null || getClass() != o.getClass()) return false; 933390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 934390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName that = (ResourceName) o; 935390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 936390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (iconId != that.iconId) return false; 937390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return !(packageName != null ? 938390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick !packageName.equals(that.packageName) : that.packageName != null); 939390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 940390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 941390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 942390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 943390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int hashCode() { 944390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int result; 945390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick result = packageName.hashCode(); 946390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick result = 31 * result + iconId; 947390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return result; 948390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 949390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 950390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 951390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String toString() { 952390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return "{ResourceName " + packageName + " / " + iconId + "}"; 953390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 954390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 955390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 956390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private CharSequence getCachedString(ResourceName name) { 957390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 958390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick WeakReference<CharSequence> wr = sStringCache.get(name); 959390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (wr != null) { // we have the activity 960390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick CharSequence cs = wr.get(); 961390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (cs != null) { 962390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return cs; 963390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 964390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // our entry has been purged 965390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.remove(name); 966390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 967390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 968390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 969390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 970390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 971390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private void putCachedString(ResourceName name, CharSequence cs) { 972390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick synchronized (sSync) { 973390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick sStringCache.put(name, new WeakReference<CharSequence>(cs)); 974390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 975390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 976390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 977390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 978390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public CharSequence getText(String packageName, int resid, 979390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 980390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ResourceName name = new ResourceName(packageName, resid); 981390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick CharSequence text = getCachedString(name); 982390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (text != null) { 983390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return text; 984390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 985390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 986390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 987390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 988390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 989390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 990390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 991390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 992390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 993390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 994390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick text = r.getText(resid); 995390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick putCachedString(name, text); 996390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return text; 997390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 998390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving resources for" 999390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 1000390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 1001390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 1002390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 1003390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving text 0x" 1004390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 1005390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 1006390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1007390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1008390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1009390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1010390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1011390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public XmlResourceParser getXml(String packageName, int resid, 1012390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick ApplicationInfo appInfo) { 1013390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick if (appInfo == null) { 1014390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1015390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick appInfo = getApplicationInfo(packageName, 0); 1016390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 1017390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1018390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1019390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1020390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1021390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Resources r = getResourcesForApplication(appInfo); 1022390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return r.getXml(resid); 1023390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RuntimeException e) { 1024390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // If an exception was thrown, fall through to return 1025390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // default icon. 1026390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick Log.w("PackageManager", "Failure retrieving xml 0x" 1027390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + Integer.toHexString(resid) + " in package " 1028390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + packageName, e); 1029390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (NameNotFoundException e) { 10303fa51e3430e3bf902ae4f2d72dfb956103b6bd2dAlon Albert Log.w("PackageManager", "Failure retrieving resources for " 1031390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick + appInfo.packageName); 1032390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1033390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1034390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1035390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1036390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1037390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public CharSequence getApplicationLabel(ApplicationInfo info) { 1038390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return info.loadLabel(this); 1039390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1040390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1041390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1042390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags, 1043390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick String installerPackageName) { 1044390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1045390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.installPackage(packageURI, observer, flags, installerPackageName); 1046390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1047390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1048390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1049390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1050390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1051390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 10525ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer, 10535ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root int flags, String installerPackageName, Uri verificationURI, 1054e1d7c711df3e3a2d2f195457882aa4ddb5626167Rich Cannings ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) { 10555ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root try { 10565ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root mPM.installPackageWithVerification(packageURI, observer, flags, installerPackageName, 1057e1d7c711df3e3a2d2f195457882aa4ddb5626167Rich Cannings verificationURI, manifestDigest, encryptionParams); 10585ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } catch (RemoteException e) { 10595ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root // Should never happen! 10605ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10615ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10625ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root 10635ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root @Override 1064706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void installPackageWithVerificationAndEncryption(Uri packageURI, 1065706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings IPackageInstallObserver observer, int flags, String installerPackageName, 1066706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) { 1067706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings try { 1068706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings mPM.installPackageWithVerificationAndEncryption(packageURI, observer, flags, 1069706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings installerPackageName, verificationParams, encryptionParams); 1070706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } catch (RemoteException e) { 1071706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings // Should never happen! 1072706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 1073706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 1074706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 1075706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings @Override 10767767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn public int installExistingPackage(String packageName) 10777767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throws NameNotFoundException { 10787767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn try { 107967df64b3a48a8157d08a98fa90135d0ac0ee621cAmith Yamasani int res = mPM.installExistingPackageAsUser(packageName, UserHandle.myUserId()); 10807767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn if (res == INSTALL_FAILED_INVALID_URI) { 10817767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throw new NameNotFoundException("Package " + packageName + " doesn't exist"); 10827767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10837767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn return res; 10847767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } catch (RemoteException e) { 10857767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn // Should never happen! 10867767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn throw new NameNotFoundException("Package " + packageName + " doesn't exist"); 10877767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10887767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn } 10897767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn 10907767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn @Override 10913a9b5fbb97e65019abec97f172b4cbf2100d1225Kenny Root public void verifyPendingInstall(int id, int response) { 10925ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root try { 10933a9b5fbb97e65019abec97f172b4cbf2100d1225Kenny Root mPM.verifyPendingInstall(id, response); 10945ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } catch (RemoteException e) { 10955ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root // Should never happen! 10965ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10975ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root } 10985ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root 10995ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Root @Override 1100d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings public void extendVerificationTimeout(int id, int verificationCodeAtTimeout, 1101d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings long millisecondsToDelay) { 1102d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings try { 1103d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings mPM.extendVerificationTimeout(id, verificationCodeAtTimeout, millisecondsToDelay); 1104d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } catch (RemoteException e) { 1105d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings // Should never happen! 1106d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } 1107d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings } 1108d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings 1109d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings @Override 1110880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn public void setInstallerPackageName(String targetPackage, 1111880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn String installerPackageName) { 1112880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn try { 1113880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn mPM.setInstallerPackageName(targetPackage, installerPackageName); 1114880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } catch (RemoteException e) { 1115880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn // Should never happen! 1116880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } 1117880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn } 1118880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn 1119880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn @Override 1120390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void movePackage(String packageName, IPackageMoveObserver observer, int flags) { 1121390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1122390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.movePackage(packageName, observer, flags); 1123390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1124390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1125390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1126390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1127390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1128390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1129390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public String getInstallerPackageName(String packageName) { 1130390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1131390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getInstallerPackageName(packageName); 1132390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1133390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1134390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1135390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return null; 1136390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1137390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1138390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1139390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void deletePackage(String packageName, IPackageDeleteObserver observer, int flags) { 1140390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 114167df64b3a48a8157d08a98fa90135d0ac0ee621cAmith Yamasani mPM.deletePackageAsUser(packageName, observer, UserHandle.myUserId(), flags); 1142390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1143390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1144390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1145390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1146390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1147390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void clearApplicationUserData(String packageName, 1148390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageDataObserver observer) { 1149390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1150ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mPM.clearApplicationUserData(packageName, observer, mContext.getUserId()); 1151390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1152390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1153390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1154390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1155390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1156390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void deleteApplicationCacheFiles(String packageName, 1157390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick IPackageDataObserver observer) { 1158390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1159390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.deleteApplicationCacheFiles(packageName, observer); 1160390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1161390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1162390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1163390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1164390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1165390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void freeStorageAndNotify(long idealStorageSize, IPackageDataObserver observer) { 1166390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1167390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.freeStorageAndNotify(idealStorageSize, observer); 1168390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1169390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1170390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1171390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1172390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1173390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1174390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void freeStorage(long freeStorageSize, IntentSender pi) { 1175390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1176390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.freeStorage(freeStorageSize, pi); 1177390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1178390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1179390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1180390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1181390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1182390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 11830c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn public void getPackageSizeInfo(String packageName, int userHandle, 11840c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn IPackageStatsObserver observer) { 1185390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 11860c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn mPM.getPackageSizeInfo(packageName, userHandle, observer); 1187390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1188390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1189390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1190390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1191390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1192390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void addPackageToPreferred(String packageName) { 1193390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1194390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.addPackageToPreferred(packageName); 1195390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1196390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1197390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1198390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1199390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1200390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1201390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void removePackageFromPreferred(String packageName) { 1202390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1203390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.removePackageFromPreferred(packageName); 1204390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1205390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1206390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1207390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1208390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1209390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1210390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public List<PackageInfo> getPreferredPackages(int flags) { 1211390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1212390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPreferredPackages(flags); 1213390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1214390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1215390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1216390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return new ArrayList<PackageInfo>(); 1217390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1218390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1219390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1220390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void addPreferredActivity(IntentFilter filter, 1221390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int match, ComponentName[] set, ComponentName activity) { 1222390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1223ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mPM.addPreferredActivity(filter, match, set, activity, mContext.getUserId()); 1224a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } catch (RemoteException e) { 1225a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani // Should never happen! 1226a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } 1227a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani } 1228a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani 1229a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani @Override 1230a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani public void addPreferredActivity(IntentFilter filter, int match, 1231a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani ComponentName[] set, ComponentName activity, int userId) { 1232a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani try { 1233a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani mPM.addPreferredActivity(filter, match, set, activity, userId); 1234390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1235390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1236390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1237390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1238390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1239390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1240390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void replacePreferredActivity(IntentFilter filter, 1241390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int match, ComponentName[] set, ComponentName activity) { 1242390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1243390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.replacePreferredActivity(filter, match, set, activity); 1244390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1245390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1246390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1247390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1248390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1249390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1250390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void clearPackagePreferredActivities(String packageName) { 1251390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1252390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick mPM.clearPackagePreferredActivities(packageName); 1253390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1254390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1255390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1256390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1257390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1258390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1259390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getPreferredActivities(List<IntentFilter> outFilters, 1260390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick List<ComponentName> outActivities, String packageName) { 1261390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1262390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return mPM.getPreferredActivities(outFilters, outActivities, packageName); 1263390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1264390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1265390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1266390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return 0; 1267390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1268390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1269390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1270a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate public ComponentName getHomeActivities(List<ResolveInfo> outActivities) { 1271a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate try { 1272a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate return mPM.getHomeActivities(outActivities); 1273a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate } catch (RemoteException e) { 1274a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate // Should never happen! 1275a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate } 1276a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate return null; 1277a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate } 1278a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate 1279a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate @Override 1280390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void setComponentEnabledSetting(ComponentName componentName, 1281390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int newState, int flags) { 1282390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1283ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey mPM.setComponentEnabledSetting(componentName, newState, flags, mContext.getUserId()); 1284390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1285390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1286390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1287390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1288390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1289390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1290390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getComponentEnabledSetting(ComponentName componentName) { 1291390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1292ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mPM.getComponentEnabledSetting(componentName, mContext.getUserId()); 1293390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1294390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1295390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1296390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 1297390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1298390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1299390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1300390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public void setApplicationEnabledSetting(String packageName, 1301390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick int newState, int flags) { 1302390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 13033fa3c28a356108a6558b6b54a0b10e1a5cc4f1b6Dianne Hackborn mPM.setApplicationEnabledSetting(packageName, newState, flags, 130495d785346b4dae808a2d8f77356175e55a572d96Dianne Hackborn mContext.getUserId(), mContext.getOpPackageName()); 1305390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1306390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1307390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1308390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1309390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1310390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick @Override 1311390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick public int getApplicationEnabledSetting(String packageName) { 1312390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick try { 1313ded653b168b19f6061889907d4f562d764c5559bJeff Sharkey return mPM.getApplicationEnabledSetting(packageName, mContext.getUserId()); 1314390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } catch (RemoteException e) { 1315390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick // Should never happen! 1316390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1317390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 1318390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick } 1319390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1320655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani @Override 1321655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani public boolean setApplicationBlockedSettingAsUser(String packageName, boolean blocked, 1322655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani UserHandle user) { 1323655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani try { 1324655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani return mPM.setApplicationBlockedSettingAsUser(packageName, blocked, 1325655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani user.getIdentifier()); 1326655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani } catch (RemoteException re) { 1327655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani // Should never happen! 1328655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani } 1329655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani return false; 1330655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani } 1331655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani 1332655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani @Override 1333655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani public boolean getApplicationBlockedSettingAsUser(String packageName, UserHandle user) { 1334655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani try { 1335655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani return mPM.getApplicationBlockedSettingAsUser(packageName, user.getIdentifier()); 1336655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani } catch (RemoteException re) { 1337655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani // Should never happen! 1338655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani } 1339655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani return false; 1340655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani } 1341655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani 13420aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root /** 13430aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * @hide 13440aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root */ 13450aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root @Override 13460aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public VerifierDeviceIdentity getVerifierDeviceIdentity() { 13470aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 13480aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return mPM.getVerifierDeviceIdentity(); 13490aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (RemoteException e) { 13500aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // Should never happen! 13510aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 13520aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return null; 13530aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 13540aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1355390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final ContextImpl mContext; 1356390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private final IPackageManager mPM; 1357390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick 1358390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick private static final Object sSync = new Object(); 1359add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn private static ArrayMap<ResourceName, WeakReference<Drawable.ConstantState>> sIconCache 1360add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn = new ArrayMap<ResourceName, WeakReference<Drawable.ConstantState>>(); 1361add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn private static ArrayMap<ResourceName, WeakReference<CharSequence>> sStringCache 1362add005cf94dcc815d29b54588c76fd87929075b3Dianne Hackborn = new ArrayMap<ResourceName, WeakReference<CharSequence>>(); 1363390dae1a8b8c2da6a24f3246c8c277645bcc75dcBrad Fitzpatrick} 1364