f07af7b77d
Support showing app details for apps in other profiles. Bug: 16371359 Change-Id: I1cabcd9f74f2a6ea6c4202a7d58af3ff3b458fd2
138 lines
5.1 KiB
Java
138 lines
5.1 KiB
Java
/*
|
|
* Copyright (C) 2014 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.launcher3.compat;
|
|
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.pm.LauncherActivityInfo;
|
|
import android.content.pm.LauncherApps;
|
|
import android.graphics.Rect;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.UserHandle;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class LauncherAppsCompatVL extends LauncherAppsCompat {
|
|
|
|
private LauncherApps mLauncherApps;
|
|
|
|
private Map<OnAppsChangedCallbackCompat, WrappedCallback> mCallbacks
|
|
= new HashMap<OnAppsChangedCallbackCompat, WrappedCallback>();
|
|
|
|
LauncherAppsCompatVL(Context context) {
|
|
super();
|
|
mLauncherApps = (LauncherApps) context.getSystemService("launcherapps");
|
|
}
|
|
|
|
public List<LauncherActivityInfoCompat> getActivityList(String packageName,
|
|
UserHandleCompat user) {
|
|
List<LauncherActivityInfo> list = mLauncherApps.getActivityList(packageName,
|
|
user.getUser());
|
|
if (list.size() == 0) {
|
|
return Collections.EMPTY_LIST;
|
|
}
|
|
ArrayList<LauncherActivityInfoCompat> compatList =
|
|
new ArrayList<LauncherActivityInfoCompat>(list.size());
|
|
for (LauncherActivityInfo info : list) {
|
|
compatList.add(new LauncherActivityInfoCompatVL(info));
|
|
}
|
|
return compatList;
|
|
}
|
|
|
|
public LauncherActivityInfoCompat resolveActivity(Intent intent, UserHandleCompat user) {
|
|
LauncherActivityInfo activity = mLauncherApps.resolveActivity(intent, user.getUser());
|
|
if (activity != null) {
|
|
return new LauncherActivityInfoCompatVL(activity);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public void startActivityForProfile(ComponentName component, UserHandleCompat user,
|
|
Rect sourceBounds, Bundle opts) {
|
|
mLauncherApps.startActivityForProfile(component, user.getUser(), sourceBounds, opts);
|
|
}
|
|
|
|
public void showAppDetailsForProfile(ComponentName component, UserHandleCompat user) {
|
|
mLauncherApps.showAppDetailsForProfile(component, user.getUser(), null, null);
|
|
}
|
|
|
|
public void addOnAppsChangedCallback(LauncherAppsCompat.OnAppsChangedCallbackCompat callback) {
|
|
WrappedCallback wrappedCallback = new WrappedCallback(callback);
|
|
synchronized (mCallbacks) {
|
|
mCallbacks.put(callback, wrappedCallback);
|
|
}
|
|
mLauncherApps.addOnAppsChangedCallback(wrappedCallback);
|
|
}
|
|
|
|
public void removeOnAppsChangedCallback(
|
|
LauncherAppsCompat.OnAppsChangedCallbackCompat callback) {
|
|
WrappedCallback wrappedCallback = null;
|
|
synchronized (mCallbacks) {
|
|
wrappedCallback = mCallbacks.remove(callback);
|
|
}
|
|
if (wrappedCallback != null) {
|
|
mLauncherApps.removeOnAppsChangedCallback(wrappedCallback);
|
|
}
|
|
}
|
|
|
|
public boolean isPackageEnabledForProfile(String packageName, UserHandleCompat user) {
|
|
return mLauncherApps.isPackageEnabledForProfile(packageName, user.getUser());
|
|
}
|
|
|
|
public boolean isActivityEnabledForProfile(ComponentName component, UserHandleCompat user) {
|
|
return mLauncherApps.isActivityEnabledForProfile(component, user.getUser());
|
|
}
|
|
|
|
private static class WrappedCallback extends LauncherApps.OnAppsChangedCallback {
|
|
private LauncherAppsCompat.OnAppsChangedCallbackCompat mCallback;
|
|
|
|
public WrappedCallback(LauncherAppsCompat.OnAppsChangedCallbackCompat callback) {
|
|
mCallback = callback;
|
|
}
|
|
|
|
public void onPackageRemoved(String packageName, UserHandle user) {
|
|
mCallback.onPackageRemoved(packageName, UserHandleCompat.fromUser(user));
|
|
}
|
|
|
|
public void onPackageAdded(String packageName, UserHandle user) {
|
|
mCallback.onPackageAdded(packageName, UserHandleCompat.fromUser(user));
|
|
}
|
|
|
|
public void onPackageChanged(String packageName, UserHandle user) {
|
|
mCallback.onPackageChanged(packageName, UserHandleCompat.fromUser(user));
|
|
}
|
|
|
|
public void onPackagesAvailable(String[] packageNames, UserHandle user, boolean replacing) {
|
|
mCallback.onPackagesAvailable(packageNames, UserHandleCompat.fromUser(user), replacing);
|
|
}
|
|
|
|
public void onPackagesUnavailable(String[] packageNames, UserHandle user,
|
|
boolean replacing) {
|
|
mCallback.onPackagesUnavailable(packageNames, UserHandleCompat.fromUser(user),
|
|
replacing);
|
|
}
|
|
}
|
|
}
|
|
|