SessionCommitReceiver.java revision 4179e9b88f21d49e24ee005c00b0dad0de0ec343
14179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal/* 24179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * Copyright (C) 2008 The Android Open Source Project 34179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * 44179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * Licensed under the Apache License, Version 2.0 (the "License"); 54179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * you may not use this file except in compliance with the License. 64179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * You may obtain a copy of the License at 74179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * 84179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * http://www.apache.org/licenses/LICENSE-2.0 94179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * 104179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * Unless required by applicable law or agreed to in writing, software 114179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * distributed under the License is distributed on an "AS IS" BASIS, 124179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * See the License for the specific language governing permissions and 144179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * limitations under the License. 154179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal */ 164179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 174179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalpackage com.android.launcher3; 184179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 194179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.content.BroadcastReceiver; 204179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.content.Context; 214179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.content.Intent; 224179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.content.pm.LauncherActivityInfo; 234179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.content.pm.PackageInstaller; 244179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.content.pm.PackageInstaller.SessionInfo; 254179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.os.Process; 264179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.os.UserHandle; 274179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport android.text.TextUtils; 284179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 294179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport com.android.launcher3.compat.LauncherAppsCompat; 304179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 314179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalimport java.util.List; 324179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 334179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal/** 344179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal * BroadcastReceiver to handle session commit intent. 354179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal */ 364179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyalpublic class SessionCommitReceiver extends BroadcastReceiver { 374179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 384179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal // Preference key for automatically adding icon to homescreen. 394179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal public static final String ADD_ICON_PREFERENCE_KEY = "pref_add_icon_to_home"; 404179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 414179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal @Override 424179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal public void onReceive(Context context, Intent intent) { 434179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal if (!isEnabled(context)) { 444179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal // User has decided to not add icons on homescreen. 454179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal return; 464179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal } 474179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 484179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal SessionInfo info = intent.getParcelableExtra(PackageInstaller.EXTRA_SESSION); 494179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER); 504179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal // TODO: Verify install reason 514179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal if (TextUtils.isEmpty(info.getAppPackageName())) { 524179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal return; 534179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal } 544179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 554179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal if (!Process.myUserHandle().equals(user)) { 564179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal // Managed profile is handled using ManagedProfileHeuristic 574179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal return; 584179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal } 594179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 604179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal List<LauncherActivityInfo> activities = LauncherAppsCompat.getInstance(context) 614179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal .getActivityList(info.getAppPackageName(), user); 624179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal if (activities == null || activities.isEmpty()) { 634179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal // no activity found 644179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal return; 654179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal } 664179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal InstallShortcutReceiver.queueActivityInfo(activities.get(0), context); 674179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal } 684179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal 694179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal public static boolean isEnabled(Context context) { 704179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal return Utilities.getPrefs(context).getBoolean(ADD_ICON_PREFERENCE_KEY, true); 714179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal } 724179e9b88f21d49e24ee005c00b0dad0de0ec343Sunny Goyal} 73