diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2017-03-08 14:25:09 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2017-03-09 10:56:09 -0800 |
commit | 4179e9b88f21d49e24ee005c00b0dad0de0ec343 (patch) | |
tree | 7d2529963201820462c3c7fe809a26679844a756 /src/com/android/launcher3/SessionCommitReceiver.java | |
parent | b07a355fe24d70b4affbe2afaf74a8568b2e0e08 (diff) | |
download | packages_apps_Trebuchet-4179e9b88f21d49e24ee005c00b0dad0de0ec343.tar.gz packages_apps_Trebuchet-4179e9b88f21d49e24ee005c00b0dad0de0ec343.tar.bz2 packages_apps_Trebuchet-4179e9b88f21d49e24ee005c00b0dad0de0ec343.zip |
Adding broadcast receiver to handle SESSION_COMMIT broadcast
> Disabling Install shortcut broadcast for O and above
> Adding a preference to control automatic icon addition on homescreen
> Adding icons on homescreen for new installs based on the above preference
Bug: 32920609
Bug: 27967412
Change-Id: I92e5cb7c841fb445dc8bc058d975f212ee54f8d1
Diffstat (limited to 'src/com/android/launcher3/SessionCommitReceiver.java')
-rw-r--r-- | src/com/android/launcher3/SessionCommitReceiver.java | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/com/android/launcher3/SessionCommitReceiver.java b/src/com/android/launcher3/SessionCommitReceiver.java new file mode 100644 index 000000000..e8bf0a5c3 --- /dev/null +++ b/src/com/android/launcher3/SessionCommitReceiver.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2008 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; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.pm.LauncherActivityInfo; +import android.content.pm.PackageInstaller; +import android.content.pm.PackageInstaller.SessionInfo; +import android.os.Process; +import android.os.UserHandle; +import android.text.TextUtils; + +import com.android.launcher3.compat.LauncherAppsCompat; + +import java.util.List; + +/** + * BroadcastReceiver to handle session commit intent. + */ +public class SessionCommitReceiver extends BroadcastReceiver { + + // Preference key for automatically adding icon to homescreen. + public static final String ADD_ICON_PREFERENCE_KEY = "pref_add_icon_to_home"; + + @Override + public void onReceive(Context context, Intent intent) { + if (!isEnabled(context)) { + // User has decided to not add icons on homescreen. + return; + } + + SessionInfo info = intent.getParcelableExtra(PackageInstaller.EXTRA_SESSION); + UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER); + // TODO: Verify install reason + if (TextUtils.isEmpty(info.getAppPackageName())) { + return; + } + + if (!Process.myUserHandle().equals(user)) { + // Managed profile is handled using ManagedProfileHeuristic + return; + } + + List<LauncherActivityInfo> activities = LauncherAppsCompat.getInstance(context) + .getActivityList(info.getAppPackageName(), user); + if (activities == null || activities.isEmpty()) { + // no activity found + return; + } + InstallShortcutReceiver.queueActivityInfo(activities.get(0), context); + } + + public static boolean isEnabled(Context context) { + return Utilities.getPrefs(context).getBoolean(ADD_ICON_PREFERENCE_KEY, true); + } +} |