Loading res/xml/roles.xml +1 −2 Original line number Diff line number Diff line Loading @@ -80,8 +80,7 @@ exclusive="true" showNone="true" label="@string/role_assistant_label" requestDescription="@string/role_assistant_request_description" requestTitle="@string/role_assistant_request_title" requestable="false" shortLabel="@string/role_assistant_short_label"> <required-components> <!-- Qualified components are determined int AssistantRoleBehavior. This comment here is Loading src/com/android/packageinstaller/role/model/Role.java +15 −3 Original line number Diff line number Diff line Loading @@ -111,6 +111,12 @@ public class Role { @StringRes private final int mRequestTitleResource; /** * Whether this role is requestable by applications with * {@link android.app.role.RoleManager#createRequestRoleIntent(String)}. */ private final boolean mRequestable; /** * The string resource for the short label of this role, currently used when in a list of roles. */ Loading Loading @@ -156,9 +162,10 @@ public class Role { public Role(@NonNull String name, @Nullable RoleBehavior behavior, @StringRes int descriptionResource, boolean exclusive, @StringRes int labelResource, @StringRes int requestDescriptionResource, @StringRes int requestTitleResource, @StringRes int shortLabelResource, boolean showNone, boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions, @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) { boolean requestable, @StringRes int shortLabelResource, boolean showNone, boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions, @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) { mName = name; mBehavior = behavior; mDescriptionResource = descriptionResource; Loading @@ -166,6 +173,7 @@ public class Role { mLabelResource = labelResource; mRequestDescriptionResource = requestDescriptionResource; mRequestTitleResource = requestTitleResource; mRequestable = requestable; mShortLabelResource = shortLabelResource; mShowNone = showNone; mSystemOnly = systemOnly; Loading Loading @@ -209,6 +217,10 @@ public class Role { return mRequestTitleResource; } public boolean isRequestable() { return mRequestable; } @StringRes public int getShortLabelResource() { return mShortLabelResource; Loading src/com/android/packageinstaller/role/model/Roles.java +22 −13 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public class Roles { private static final String ATTRIBUTE_LABEL = "label"; private static final String ATTRIBUTE_REQUEST_TITLE = "requestTitle"; private static final String ATTRIBUTE_REQUEST_DESCRIPTION = "requestDescription"; private static final String ATTRIBUTE_REQUESTABLE = "requestable"; private static final String ATTRIBUTE_SHORT_LABEL = "shortLabel"; private static final String ATTRIBUTE_SHOW_NONE = "showNone"; private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly"; Loading Loading @@ -305,19 +306,27 @@ public class Roles { return null; } Integer requestDescriptionResource = requireAttributeResourceValue(parser, boolean requestable = getAttributeBooleanValue(parser, ATTRIBUTE_REQUESTABLE, true); Integer requestDescriptionResource; Integer requestTitleResource; if (requestable) { requestDescriptionResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_DESCRIPTION, 0, TAG_ROLE); if (requestDescriptionResource == null) { skipCurrentTag(parser); return null; } Integer requestTitleResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_TITLE, 0, TAG_ROLE); requestTitleResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_TITLE, 0, TAG_ROLE); if (requestTitleResource == null) { skipCurrentTag(parser); return null; } } else { requestDescriptionResource = 0; requestTitleResource = 0; } Integer shortLabelResource = requireAttributeResourceValue(parser, ATTRIBUTE_SHORT_LABEL, 0, TAG_ROLE); Loading Loading @@ -402,8 +411,8 @@ public class Roles { preferredActivities = Collections.emptyList(); } return new Role(name, behavior, descriptionResource, exclusive, labelResource, requestDescriptionResource, requestTitleResource, shortLabelResource, showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities); requestDescriptionResource, requestTitleResource, requestable, shortLabelResource, showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities); } @NonNull Loading src/com/android/packageinstaller/role/ui/RequestRoleActivity.java +6 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,12 @@ public class RequestRoleActivity extends FragmentActivity { return; } if (!role.isRequestable()) { Log.e(LOG_TAG, "Role is not requestable: " + mRoleName); finish(); return; } if (!role.isExclusive()) { Log.e(LOG_TAG, "Role is not exclusive: " + mRoleName); finish(); Loading Loading
res/xml/roles.xml +1 −2 Original line number Diff line number Diff line Loading @@ -80,8 +80,7 @@ exclusive="true" showNone="true" label="@string/role_assistant_label" requestDescription="@string/role_assistant_request_description" requestTitle="@string/role_assistant_request_title" requestable="false" shortLabel="@string/role_assistant_short_label"> <required-components> <!-- Qualified components are determined int AssistantRoleBehavior. This comment here is Loading
src/com/android/packageinstaller/role/model/Role.java +15 −3 Original line number Diff line number Diff line Loading @@ -111,6 +111,12 @@ public class Role { @StringRes private final int mRequestTitleResource; /** * Whether this role is requestable by applications with * {@link android.app.role.RoleManager#createRequestRoleIntent(String)}. */ private final boolean mRequestable; /** * The string resource for the short label of this role, currently used when in a list of roles. */ Loading Loading @@ -156,9 +162,10 @@ public class Role { public Role(@NonNull String name, @Nullable RoleBehavior behavior, @StringRes int descriptionResource, boolean exclusive, @StringRes int labelResource, @StringRes int requestDescriptionResource, @StringRes int requestTitleResource, @StringRes int shortLabelResource, boolean showNone, boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions, @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) { boolean requestable, @StringRes int shortLabelResource, boolean showNone, boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions, @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) { mName = name; mBehavior = behavior; mDescriptionResource = descriptionResource; Loading @@ -166,6 +173,7 @@ public class Role { mLabelResource = labelResource; mRequestDescriptionResource = requestDescriptionResource; mRequestTitleResource = requestTitleResource; mRequestable = requestable; mShortLabelResource = shortLabelResource; mShowNone = showNone; mSystemOnly = systemOnly; Loading Loading @@ -209,6 +217,10 @@ public class Role { return mRequestTitleResource; } public boolean isRequestable() { return mRequestable; } @StringRes public int getShortLabelResource() { return mShortLabelResource; Loading
src/com/android/packageinstaller/role/model/Roles.java +22 −13 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public class Roles { private static final String ATTRIBUTE_LABEL = "label"; private static final String ATTRIBUTE_REQUEST_TITLE = "requestTitle"; private static final String ATTRIBUTE_REQUEST_DESCRIPTION = "requestDescription"; private static final String ATTRIBUTE_REQUESTABLE = "requestable"; private static final String ATTRIBUTE_SHORT_LABEL = "shortLabel"; private static final String ATTRIBUTE_SHOW_NONE = "showNone"; private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly"; Loading Loading @@ -305,19 +306,27 @@ public class Roles { return null; } Integer requestDescriptionResource = requireAttributeResourceValue(parser, boolean requestable = getAttributeBooleanValue(parser, ATTRIBUTE_REQUESTABLE, true); Integer requestDescriptionResource; Integer requestTitleResource; if (requestable) { requestDescriptionResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_DESCRIPTION, 0, TAG_ROLE); if (requestDescriptionResource == null) { skipCurrentTag(parser); return null; } Integer requestTitleResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_TITLE, 0, TAG_ROLE); requestTitleResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_TITLE, 0, TAG_ROLE); if (requestTitleResource == null) { skipCurrentTag(parser); return null; } } else { requestDescriptionResource = 0; requestTitleResource = 0; } Integer shortLabelResource = requireAttributeResourceValue(parser, ATTRIBUTE_SHORT_LABEL, 0, TAG_ROLE); Loading Loading @@ -402,8 +411,8 @@ public class Roles { preferredActivities = Collections.emptyList(); } return new Role(name, behavior, descriptionResource, exclusive, labelResource, requestDescriptionResource, requestTitleResource, shortLabelResource, showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities); requestDescriptionResource, requestTitleResource, requestable, shortLabelResource, showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities); } @NonNull Loading
src/com/android/packageinstaller/role/ui/RequestRoleActivity.java +6 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,12 @@ public class RequestRoleActivity extends FragmentActivity { return; } if (!role.isRequestable()) { Log.e(LOG_TAG, "Role is not requestable: " + mRoleName); finish(); return; } if (!role.isExclusive()) { Log.e(LOG_TAG, "Role is not exclusive: " + mRoleName); finish(); Loading