项目:ProgressManager
文件:a.java
/**
* @hide Implement to provide correct calling token.
*/
public void startActivityAsUser(Intent intent,Bundle options,UserHandle user) {
if (mParent != null) {
throw new RuntimeException("Can't be called from a child");
}
options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this,mMainThread.getApplicationThread(),mToken,this,intent,-1,options,user);
if (ar != null) {
mMainThread.sendActivityResult(
mToken,mEmbeddedID,ar.getResultCode(),ar.getResultData());
}
cancelInputsAndStartExitTransition(options);
}
项目:FlickLauncher
文件:UserManagerCompatVL.java
@Override
public void enableAndResetCache() {
synchronized (this) {
mUsers = new LongArrayMap<>();
mUserToSerialMap = new HashMap<>();
List<UserHandle> users = mUserManager.getUserProfiles();
if (users != null) {
for (UserHandle user : users) {
long serial = mUserManager.getSerialNumberForUser(user);
UserHandleCompat userCompat = UserHandleCompat.fromUser(user);
mUsers.put(serial,userCompat);
mUserToSerialMap.put(userCompat,serial);
}
}
}
}
项目:LaunchEnr
文件:AddWorkspaceItemsTask.java
/**
* Returns true if the shortcuts already exists on the workspace. This must be called after
* the workspace has been loaded. We identify a shortcut by its intent.
*/
private boolean shortcutExists(BgDataModel dataModel,Intent intent,UserHandle user) {
final String intentWithPkg,intentWithoutPkg;
if (intent == null) {
// Skip items with null intents
return true;
}
if (intent.getComponent() != null) {
// If component is not null,an intent with null package will produce
// the same result and should also be a match.
String packageName = intent.getComponent().getPackageName();
if (intent.getPackage() != null) {
intentWithPkg = intent.toUri(0);
intentWithoutPkg = new Intent(intent).setPackage(null).toUri(0);
} else {
intentWithPkg = new Intent(intent).setPackage(packageName).toUri(0);
intentWithoutPkg = intent.toUri(0);
}
} else {
intentWithPkg = intent.toUri(0);
intentWithoutPkg = intent.toUri(0);
}
synchronized (dataModel) {
for (ItemInfo item : dataModel.itemsIdMap) {
if (item instanceof ShortcutInfo) {
ShortcutInfo info = (ShortcutInfo) item;
if (item.getIntent() != null && info.user.equals(user)) {
Intent copyIntent = new Intent(item.getIntent());
copyIntent.setSourceBounds(intent.getSourceBounds());
String s = copyIntent.toUri(0);
if (intentWithPkg.equals(s) || intentWithoutPkg.equals(s)) {
return true;
}
}
}
}
}
return false;
}
项目:LaunchEnr
文件:BgDataModel.java
/**
* Clear all the deep shortcuts for the given package,and re-add the new shortcuts.
*/
public synchronized void updateDeepShortcutMap(
String packageName,UserHandle user,List<ShortcutInfoCompat> shortcuts) {
if (packageName != null) {
Iterator<ComponentKey> keysIter = deepShortcutMap.keySet().iterator();
while (keysIter.hasNext()) {
ComponentKey next = keysIter.next();
if (next.componentName.getPackageName().equals(packageName)
&& next.user.equals(user)) {
keysIter.remove();
}
}
}
// Now add the new shortcuts to the map.
for (ShortcutInfoCompat shortcut : shortcuts) {
boolean shouldShowInContainer = shortcut.isEnabled()
&& (shortcut.isDeclaredInManifest() || shortcut.isDynamic());
if (shouldShowInContainer) {
ComponentKey targetComponent
= new ComponentKey(shortcut.getActivity(),shortcut.getUserHandle());
deepShortcutMap.addToList(targetComponent,shortcut.getId());
}
}
}
项目:LaunchEnr
文件:AllAppsList.java
public void updateIconsAndLabels(HashSet<String> packages,ArrayList<AppInfo> outUpdates) {
for (AppInfo info : data) {
if (info.user.equals(user) && packages.contains(info.componentName.getPackageName())) {
mIconCache.updateTitleAndIcon(info);
outUpdates.add(info);
}
}
}
项目:LaunchEnr
文件:UserManagerCompatVL.java
@Override
public long getSerialNumberForUser(UserHandle user) {
synchronized (this) {
if (mUserToSerialMap != null) {
Long serial = mUserToSerialMap.get(user);
return serial == null ? 0 : serial;
}
}
return mUserManager.getSerialNumberForUser(user);
}
项目:LaunchEnr
文件:UserManagerCompatVL.java
@Override
public UserHandle getUserForSerialNumber(long serialNumber) {
synchronized (this) {
if (mUsers != null) {
return mUsers.get(serialNumber);
}
}
return mUserManager.getUserForSerialNumber(serialNumber);
}
项目:LaunchEnr
文件:LauncherModel.java
private void scheduleManagedHeuristicRunnable(final ManagedProfileHeuristic heuristic,final UserHandle user,final List<LauncherActivityInfo> apps) {
if (heuristic != null) {
// Assume the app lists Now is updated.
mIsManagedHeuristicAppsUpdated = false;
final Runnable managedHeuristicRunnable = new Runnable() {
@Override
public void run() {
if (mIsManagedHeuristicAppsUpdated) {
// If app list is updated,we need to reschedule it otherwise old app
// list will override everything in processUserApps().
sWorker.post(new Runnable() {
public void run() {
final List<LauncherActivityInfo> updatedApps =
mLauncherApps.getActivityList(null,user);
scheduleManagedHeuristicRunnable(heuristic,user,updatedApps);
}
});
} else {
heuristic.processUserApps(apps);
}
}
};
runOnMainThread(new Runnable() {
@Override
public void run() {
// Check isLoadingWorkspace on the UI thread,as it is updated on the UI
// thread.
if (mIsLoadingAndBindingWorkspace) {
synchronized (mBindCompleteRunnables) {
mBindCompleteRunnables.add(managedHeuristicRunnable);
}
} else {
runOnWorkerThread(managedHeuristicRunnable);
}
}
});
}
}
项目:LaunchEnr
文件:UserManagerCompatVL.java
@Override
public List<UserHandle> getUserProfiles() {
synchronized (this) {
if (mUsers != null) {
return new ArrayList<>(mUserToSerialMap.keySet());
}
}
List<UserHandle> users = mUserManager.getUserProfiles();
return users == null ? Collections.<UserHandle>emptyList() : users;
}
项目:LaunchEnr
文件:LauncherModel.java
private void loadDeepShortcuts() {
sBgDataModel.deepShortcutMap.clear();
DeepShortcutManager shortcutManager = DeepShortcutManager.getInstance(mContext);
mHasShortcutHostPermission = shortcutManager.hasHostPermission();
if (mHasShortcutHostPermission) {
for (UserHandle user : mUserManager.getUserProfiles()) {
if (mUserManager.isUserUnlocked(user)) {
List<ShortcutInfoCompat> shortcuts =
shortcutManager.queryForAllShortcuts(user);
sBgDataModel.updateDeepShortcutMap(null,shortcuts);
}
}
}
}
项目:condom
文件:CondomApplication.java
@RequiresApi(JELLY_BEAN_MR1) @SuppressLint("MissingPermission") @Override
public void sendOrderedbroadcastAsUser(final Intent intent,final String receiverPermission,final broadcastReceiver resultReceiver,final Handler scheduler,final int initialCode,final String initialData,final Bundle initialExtras) {
mCondom.proceedbroadcast(this,new CondomCore.WrappedProcedure() { @Override public void run() {
mApplication.sendOrderedbroadcastAsUser(intent,receiverPermission,resultReceiver,scheduler,initialCode,initialData,initialExtras);
}},resultReceiver);
}
项目:LaunchEnr
文件:CachedPackageTracker.java
/**
* Checks the list of user apps,and generates package event accordingly.
* {@see #onLauncherAppsAdded},{@see #onLauncherPackageRemoved}
*/
void processUserApps(List<LauncherActivityInfo> apps,UserHandle user) {
String prefKey = INSTALLED_PACKAGES_PREFIX + mUserManager.getSerialNumberForUser(user);
HashSet<String> oldPackageSet = new HashSet<>();
final boolean userAppsExisted = getUserApps(oldPackageSet,prefKey);
HashSet<String> packagesRemoved = new HashSet<>(oldPackageSet);
HashSet<String> newPackageSet = new HashSet<>();
ArrayList<LauncherActivityInstallInfo> packagesAdded = new ArrayList<>();
for (LauncherActivityInfo info : apps) {
String packageName = info.getComponentName().getPackageName();
newPackageSet.add(packageName);
packagesRemoved.remove(packageName);
if (!oldPackageSet.contains(packageName)) {
oldPackageSet.add(packageName);
packagesAdded.add(new LauncherActivityInstallInfo(
info,info.getFirstInstallTime()));
}
}
if (!packagesAdded.isEmpty() || !packagesRemoved.isEmpty()) {
mPrefs.edit().putStringSet(prefKey,newPackageSet).apply();
if (!packagesAdded.isEmpty()) {
Collections.sort(packagesAdded);
onLauncherAppsAdded(packagesAdded,userAppsExisted);
}
if (!packagesRemoved.isEmpty()) {
for (String pkg : packagesRemoved) {
onLauncherPackageRemoved(pkg,user);
}
}
}
}
项目:FlickLauncher
文件:AppWidgetManagerCompatVL.java
@Override
public List<appwidgetproviderInfo> getAllProviders() {
ArrayList<appwidgetproviderInfo> providers = new ArrayList<appwidgetproviderInfo>();
for (UserHandle user : mUserManager.getUserProfiles()) {
providers.addAll(mAppWidgetManager.getInstalledProvidersForProfile(user));
}
return providers;
}
项目:LaunchEnr
文件:ItemInfoMatcher.java
public static ItemInfoMatcher ofComponents(
final HashSet<ComponentName> components,final UserHandle user) {
return new ItemInfoMatcher() {
@Override
public boolean matches(ItemInfo info,ComponentName cn) {
return components.contains(cn) && info.user.equals(user);
}
};
}
项目:LaunchEnr
文件:AppWidgetManagerCompatVL.java
@Override
public HashMap<ComponentKey,appwidgetproviderInfo> getAllProvidersMap() {
HashMap<ComponentKey,appwidgetproviderInfo> result = new HashMap<>();
for (UserHandle user : mUserManager.getUserProfiles()) {
for (appwidgetproviderInfo info :
mAppWidgetManager.getInstalledProvidersForProfile(user)) {
result.put(new ComponentKey(info.provider,user),info);
}
}
return result;
}
项目:ProgressManager
文件:a.java
/**
* @hide Implement to provide correct calling token.
*/
public void startActivityForResultAsUser(Intent intent,int requestCode,@Nullable Bundle options,UserHandle user) {
if (mParent != null) {
throw new RuntimeException("Can't be called from a child");
}
options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity(
this,requestCode,ar.getResultData());
}
if (requestCode >= 0) {
// If this start is requesting a result,we can avoid making
// the activity visible until the result is received. Setting
// this code during onCreate(Bundle savedInstanceState) or onResume() will keep the
// activity hidden during this time,to avoid flickering.
// This can only be done when a result is requested because
// that guarantees we will get @R_685_4045@ion back when the
// activity is finished,no matter what happens to it.
mStartedActivity = true;
}
cancelInputsAndStartExitTransition(options);
}
项目:LaunchEnr
文件:ExtendedModelTask.java
void bindUpdatedShortcuts(
final ArrayList<ShortcutInfo> updatedShortcuts,final ArrayList<ShortcutInfo> removedShortcuts,final UserHandle user) {
if (!updatedShortcuts.isEmpty() || !removedShortcuts.isEmpty()) {
scheduleCallbackTask(new CallbackTask() {
@Override
public void execute(Callbacks callbacks) {
callbacks.bindShortcutsChanged(updatedShortcuts,removedShortcuts,user);
}
});
}
}
项目:LaunchEnr
文件:WidgetPreviewLoader.java
private void removePackage(String packageName,long userSerial) {
synchronized(mPackageVersions) {
mPackageVersions.remove(packageName);
}
mDb.delete(
CacheDb.COLUMN_PACKAGE + " = ? AND " + CacheDb.COLUMN_USER + " = ?",new String[]{packageName,Long.toString(userSerial)});
}
项目:LaunchEnr
文件:LauncherModel.java
/**
* Called when the icons for packages have been updated in the icon cache.
*/
public void onPackageIconsUpdated(HashSet<String> updatedPackages,UserHandle user) {
// If any package icon has changed (app was updated while launcher was dead),// update the corresponding shortcuts.
enqueueModelUpdateTask(new CacheDataUpdatedTask(
CacheDataUpdatedTask.OP_CACHE_UPDATE,updatedPackages));
}
项目:LaunchEnr
文件:DeepShortcutManager.java
/**
* Query the system server for all the shortcuts matching the given parameters.
* If packageName == null,we query for all shortcuts with the passed flags,regardless of app.
*
* Todo: Use the cache to optimize this so we don't make an RPC every time.
*/
@TargetApi(25)
private List<ShortcutInfoCompat> query(int flags,String packageName,ComponentName activity,List<String> shortcutIds,UserHandle user) {
if (AndroidVersion.isAtLeastNougatMR1) {
ShortcutQuery q = new ShortcutQuery();
q.setQueryFlags(flags);
if (packageName != null) {
q.setPackage(packageName);
q.setActivity(activity);
q.setShortcutIds(shortcutIds);
}
List<ShortcutInfo> shortcutInfos = null;
try {
shortcutInfos = mLauncherApps.getShortcuts(q,user);
mWasLastCallSuccess = true;
} catch (SecurityException|IllegalStateException e) {
e.printstacktrace();
mWasLastCallSuccess = false;
}
if (shortcutInfos == null) {
return Collections.EMPTY_LIST;
}
List<ShortcutInfoCompat> shortcutInfoCompats = new ArrayList<>(shortcutInfos.size());
for (ShortcutInfo shortcutInfo : shortcutInfos) {
shortcutInfoCompats.add(new ShortcutInfoCompat(shortcutInfo));
}
return shortcutInfoCompats;
} else {
return Collections.EMPTY_LIST;
}
}
项目:SimpleUILauncher
文件:LauncherAppsCompatVL.java
public void onPackageChanged(String packageName,UserHandle user) {
mCallback.onPackageChanged(packageName,UserHandleCompat.fromUser(user));
}
public static UserHandle getUserHandle(int userId) throws Exception {
Constructor<?> uhConst = XposedHelpers.findConstructorExact(UserHandle.class,int.class);
return (UserHandle) uhConst.newInstance(userId);
}
项目:SimpleUILauncher
文件:LauncherAppsCompatVL.java
public void onPackageRemoved(String packageName,UserHandle user) {
mCallback.onPackageRemoved(packageName,UserHandleCompat.fromUser(user));
}
项目:ProgressManager
文件:a.java
/**
* Create a new PendingIntent object which you can hand to others
* for them to use to send result data back to your
* {@link #onActivityResult} callback. The created object will be either
* one-shot (becoming invalid after a result is sent back) or multiple
* (allowing any number of results to be sent through it).
*
* @param requestCode Private request code for the sender that will be
* associated with the result data when it is returned. The sender can not
* modify this value,allowing you to identify incoming results.
* @param data Default data to supply in the result,which may be modified
* by the sender.
* @param flags May be {@link PendingIntent#FLAG_ONE_SHOT PendingIntent.FLAG_ONE_SHOT},* {@link PendingIntent#FLAG_NO_CREATE PendingIntent.FLAG_NO_CREATE},* {@link PendingIntent#FLAG_CANCEL_CURRENT PendingIntent.FLAG_CANCEL_CURRENT},* {@link PendingIntent#FLAG_UPDATE_CURRENT PendingIntent.FLAG_UPDATE_CURRENT},* or any of the flags as supported by
* {@link Intent#fillIn Intent.fillIn()} to control which unspecified parts
* of the intent that can be supplied when the actual send happens.
*
* @return Returns an existing or new PendingIntent matching the given
* parameters. May return null only if
* {@link PendingIntent#FLAG_NO_CREATE PendingIntent.FLAG_NO_CREATE} has been
* supplied.
*
* @see PendingIntent
*/
public PendingIntent createPendingResult(int requestCode,@NonNull Intent data,@PendingIntent.Flags int flags) {
String packageName = getPackageName();
try {
data.preparetoLeaveProcess(this);
IIntentSender target =
ActivityManagerNative.getDefault().getIntentSender(
ActivityManager.INTENT_SENDER_ACTIVITY_RESULT,packageName,mParent == null ? mToken : mParent.mToken,new Intent[] { data },null,flags,UserHandle.myUserId());
return target != null ? new PendingIntent(target) : null;
} catch (remoteexception e) {
// Empty
}
return null;
}
项目:ProgressManager
文件:a.java
/**
* @hide Implement to provide correct calling token.
*/
public void startActivityForResultAsUser(Intent intent,UserHandle user) {
startActivityForResultAsUser(intent,user);
}
@Override
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public Drawable getUserBadgedDrawableForDensity(Drawable drawable,Rect badgeLocation,int badgeDensity) {
return this.mHostPackageManager.getUserBadgedDrawableForDensity(drawable,badgeLocation,badgeDensity);
}
项目:LaunchEnr
文件:PackageManagerHelper.java
/**
* Returns whether the target app is suspended for a given user as per
* {@link android.app.admin.DevicePolicyManager#isPackageSuspended}.
*/
public boolean isAppSuspended(String packageName,UserHandle user) {
ApplicationInfo info = mLauncherApps.getApplicationInfo(packageName,user);
return info != null && isAppSuspended(info);
}
项目:MiPushFramework
文件:PackageManagerWrapper.java
/** @hide */
@Override public boolean getApplicationHiddenSettingAsUser(String packageName,UserHandle userHandle) {
return mBase.getApplicationHiddenSettingAsUser(packageName,userHandle);
}
项目:LaunchEnr
文件:LauncherAppsCompatVL.java
@Override
public List<LauncherActivityInfo> getActivityList(String packageName,UserHandle user) {
return mLauncherApps.getActivityList(packageName,user);
}
项目:LaunchEnr
文件:ManagedProfileHeuristic.java
@Override
public void onShortcutsChanged(String packageName,List<ShortcutInfoCompat> shortcuts,UserHandle user) {
// Do nothing
}
项目:LaunchEnr
文件:IconCache.java
/**
* Gets an entry for the package,which can be used as a fallback entry for varIoUs components.
* This method is not thread safe,it must be called from a synchronized method.
*/
private CacheEntry getEntryForPackageLocked(String packageName,boolean useLowResIcon) {
ComponentKey cacheKey = getPackageKey(packageName,user);
CacheEntry entry = mCache.get(cacheKey);
if (entry == null || (entry.isLowResIcon && !useLowResIcon)) {
entry = new CacheEntry();
boolean entryUpdated = true;
// Check the DB first.
if (!getEntryFromDB(cacheKey,entry,useLowResIcon)) {
try {
int uninstalled = android.os.Build.VERSION.SDK_INT >= 24 ? PackageManager.MATCH_UNINSTALLED_PACKAGES : PackageManager.GET_UNINSTALLED_PACKAGES;
int flags = Process.myUserHandle().equals(user) ? 0 : uninstalled;
PackageInfo info = mPackageManager.getPackageInfo(packageName,flags);
ApplicationInfo appInfo = info.applicationInfo;
if (appInfo == null) {
throw new NameNotFoundException("ApplicationInfo is null");
}
// Load the full res icon for the application,but if useLowResIcon is set,then
// only keep the low resolution icon instead of the larger full-sized icon
Bitmap icon = LauncherIcons.createBadgedIconBitmap(
appInfo.loadIcon(mPackageManager),mContext,appInfo.targetSdkVersion);
Bitmap lowResIcon = generateLowResIcon(icon,mPackageBgColor);
entry.title = appInfo.loadLabel(mPackageManager);
entry.contentDescription = mUserManager.getBadgedLabelForUser(entry.title,user);
entry.icon = useLowResIcon ? lowResIcon : icon;
entry.isLowResIcon = useLowResIcon;
// Add the icon in the DB here,since these do not get written during
// package updates.
ContentValues values =
newContentValues(icon,lowResIcon,entry.title.toString(),packageName);
addIconToDB(values,cacheKey.componentName,info,mUserManager.getSerialNumberForUser(user));
} catch (NameNotFoundException e) {
e.printstacktrace();
entryUpdated = false;
}
}
// Only add a filled-out entry to the cache
if (entryUpdated) {
mCache.put(cacheKey,entry);
}
}
return entry;
}
项目:FlickLauncher
文件:LauncherAppsCompatVL.java
public void onPackageRemoved(String packageName,UserHandleCompat.fromUser(user));
}
项目:LaunchEnr
文件:LauncherAppsCompatVL.java
@Override
public boolean isPackageEnabledForProfile(String packageName,UserHandle user) {
return mLauncherApps.isPackageEnabled(packageName,user);
}
项目:LaunchEnr
文件:LauncherAppsCompatVL.java
public void onPackageRemoved(String packageName,user);
}
项目:condom
文件:CondomContext.java
@RequiresApi(JELLY_BEAN_MR1) @SuppressLint("MissingPermission") @Override public void sendbroadcastAsUser(final Intent intent,final UserHandle user) {
mCondom.proceedbroadcast(this,new CondomCore.WrappedProcedure() { @Override public void run() {
CondomContext.super.sendbroadcastAsUser(intent,user);
}},null);
}
项目:LaunchEnr
文件:LauncherAppsCompatVL.java
public void onPackageChanged(String packageName,user);
}
/** @hide */
@Override
public void startActivitiesAsUser(Intent[] intents,UserHandle userHandle) {
mBase.startActivitiesAsUser(intents,userHandle);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。