Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/PackageManagerWrapper.java +42 −0 Original line number Diff line number Diff line Loading @@ -21,8 +21,12 @@ import android.content.ComponentName; import android.content.pm.ActivityInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.RemoteException; import java.util.ArrayList; import java.util.List; public class PackageManagerWrapper { private static final String TAG = "PackageManagerWrapper"; Loading @@ -47,4 +51,42 @@ public class PackageManagerWrapper { return null; } } /** * @return true if the packageName belongs to the current preferred home app on the device. * * If will also return false if there are multiple home apps and the user has not picked any * preferred home, in which case the user would see a disambiguation screen on going to home. */ public boolean isDefaultHomeActivity(String packageName) { List<ResolveInfo> allHomeCandidates = new ArrayList<>(); ComponentName home; try { home = mIPackageManager.getHomeActivities(allHomeCandidates); } catch (RemoteException e) { e.printStackTrace(); return false; } if (home != null && packageName.equals(home.getPackageName())) { return true; } // Find the launcher with the highest priority and return that component if there are no // other home activity with the same priority. int lastPriority = Integer.MIN_VALUE; ComponentName lastComponent = null; final int size = allHomeCandidates.size(); for (int i = 0; i < size; i++) { final ResolveInfo ri = allHomeCandidates.get(i); if (ri.priority > lastPriority) { lastComponent = ri.activityInfo.getComponentName(); lastPriority = ri.priority; } else if (ri.priority == lastPriority) { // Two components found with same priority. lastComponent = null; } } return lastComponent != null && packageName.equals(lastComponent.getPackageName()); } } Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/PackageManagerWrapper.java +42 −0 Original line number Diff line number Diff line Loading @@ -21,8 +21,12 @@ import android.content.ComponentName; import android.content.pm.ActivityInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.RemoteException; import java.util.ArrayList; import java.util.List; public class PackageManagerWrapper { private static final String TAG = "PackageManagerWrapper"; Loading @@ -47,4 +51,42 @@ public class PackageManagerWrapper { return null; } } /** * @return true if the packageName belongs to the current preferred home app on the device. * * If will also return false if there are multiple home apps and the user has not picked any * preferred home, in which case the user would see a disambiguation screen on going to home. */ public boolean isDefaultHomeActivity(String packageName) { List<ResolveInfo> allHomeCandidates = new ArrayList<>(); ComponentName home; try { home = mIPackageManager.getHomeActivities(allHomeCandidates); } catch (RemoteException e) { e.printStackTrace(); return false; } if (home != null && packageName.equals(home.getPackageName())) { return true; } // Find the launcher with the highest priority and return that component if there are no // other home activity with the same priority. int lastPriority = Integer.MIN_VALUE; ComponentName lastComponent = null; final int size = allHomeCandidates.size(); for (int i = 0; i < size; i++) { final ResolveInfo ri = allHomeCandidates.get(i); if (ri.priority > lastPriority) { lastComponent = ri.activityInfo.getComponentName(); lastPriority = ri.priority; } else if (ri.priority == lastPriority) { // Two components found with same priority. lastComponent = null; } } return lastComponent != null && packageName.equals(lastComponent.getPackageName()); } }