diff options
author | Luca Stefani <luca.stefani.ge1@gmail.com> | 2020-03-07 13:29:52 +0100 |
---|---|---|
committer | Luca Stefani <luca.stefani.ge1@gmail.com> | 2020-03-07 13:30:34 +0100 |
commit | f57c0cd023aac559da8c5f051b3564a23e1c9dda (patch) | |
tree | 53e8ed5a401c443f88cbdec1898d339450cc6ca5 /src/com/android/packageinstaller/role/model | |
parent | 88e1e5120ee795495957a77c43d25d8580b06fe2 (diff) | |
parent | 689d598c89a7909ae41334aca7f75c2fbff66d32 (diff) | |
download | android_packages_apps_PackageInstaller-f57c0cd023aac559da8c5f051b3564a23e1c9dda.tar.gz android_packages_apps_PackageInstaller-f57c0cd023aac559da8c5f051b3564a23e1c9dda.tar.bz2 android_packages_apps_PackageInstaller-f57c0cd023aac559da8c5f051b3564a23e1c9dda.zip |
Merge tag 'android-10.0.0_r31' into lineage-17.1-android-10.0.0_r31
Android 10.0.0 release 31
* tag 'android-10.0.0_r31':
Revert "DO NOT MERGE Set module versions to 299900000 Dev branch..."
Import translations. DO NOT MERGE
Remove permission usage from settings search
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Always copy file before parsing it for installing
DO NOT MERGE Set module versions to 299900000 Dev branch modules need to have a super high version code so that they can be sideloaded on any device running any version of modules.
[DO NOT MERGE] Grant all access_media_location permission
Update PermissionChecker usages to avoid unnecessary attribution.
Keep "None" set for assistant upon device upgrade.
Fix crash when role data isn't loaded after restoring state.
add java_api_finder plugin to mainline module PermissionController to generate java APIs used by PermissionController.
Change-Id: Ie5962d1e418b1bdd9cbc997a00234dcf91a50029
Diffstat (limited to 'src/com/android/packageinstaller/role/model')
3 files changed, 32 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java index f79522ea..bd08349e 100644 --- a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java +++ b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java @@ -18,6 +18,7 @@ package com.android.packageinstaller.role.model; import android.app.ActivityManager; import android.app.Application; +import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -25,6 +26,7 @@ import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.content.res.XmlResourceParser; +import android.os.Process; import android.os.UserHandle; import android.provider.Settings; import android.service.voice.VoiceInteractionService; @@ -59,6 +61,20 @@ public class AssistantRoleBehavior implements RoleBehavior { private static final Intent ASSIST_ACTIVITY_PROBE = new Intent(Intent.ACTION_ASSIST); @Override + public void onRoleAdded(@NonNull Role role, @NonNull Context context) { + PackageManager packageManager = context.getPackageManager(); + if (packageManager.isDeviceUpgrading()) { + RoleManager roleManager = context.getSystemService(RoleManager.class); + List<String> packageNames = roleManager.getRoleHolders(role.getName()); + if (packageNames.isEmpty()) { + // If the device was upgraded, and there isn't any legacy role holders, it means + // user selected "None" in Settings and we need to keep that. + role.onNoneHolderSelectedAsUser(Process.myUserHandle(), context); + } + } + } + + @Override public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return !UserUtils.isWorkProfile(user, context); diff --git a/src/com/android/packageinstaller/role/model/Role.java b/src/com/android/packageinstaller/role/model/Role.java index e3332db0..281e964a 100644 --- a/src/com/android/packageinstaller/role/model/Role.java +++ b/src/com/android/packageinstaller/role/model/Role.java @@ -254,6 +254,17 @@ public class Role { } /** + * Callback when this role is added to the system for the first time. + * + * @param context the {@code Context} to retrieve system services + */ + public void onRoleAdded(@NonNull Context context) { + if (mBehavior != null) { + mBehavior.onRoleAdded(this, context); + } + } + + /** * Check whether this role is available. * * @param user the user to check for diff --git a/src/com/android/packageinstaller/role/model/RoleBehavior.java b/src/com/android/packageinstaller/role/model/RoleBehavior.java index 41ffb455..a43d7ad5 100644 --- a/src/com/android/packageinstaller/role/model/RoleBehavior.java +++ b/src/com/android/packageinstaller/role/model/RoleBehavior.java @@ -36,6 +36,11 @@ import java.util.List; public interface RoleBehavior { /** + * @see Role#onRoleAdded(Context) + */ + default void onRoleAdded(@NonNull Role role, @NonNull Context context) {} + + /** * @see Role#isAvailableAsUser(UserHandle, Context) */ default boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user, |