diff options
| -rw-r--r-- | api/current.txt | 3 | ||||
| -rw-r--r-- | cmds/statsd/src/atoms.proto | 63 | ||||
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 3 | ||||
| -rw-r--r-- | core/java/android/app/NotificationManager.java | 11 | ||||
| -rw-r--r-- | core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java | 19 | ||||
| -rw-r--r-- | packages/SystemUI/res/layout/global_screenshot.xml | 6 | ||||
| -rw-r--r-- | packages/SystemUI/res/values/strings.xml | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/notification/ZenModeHelper.java | 4 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 2 |
9 files changed, 97 insertions, 18 deletions
diff --git a/api/current.txt b/api/current.txt index 826bbbc6e692..05c7cbcf5c84 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5995,7 +5995,7 @@ package android.app { method public android.service.notification.StatusBarNotification[] getActiveNotifications(); method public android.app.AutomaticZenRule getAutomaticZenRule(String); method public java.util.Map<java.lang.String,android.app.AutomaticZenRule> getAutomaticZenRules(); - method @Nullable public android.app.NotificationManager.Policy getConsolidatedNotificationPolicy(); + method @NonNull public android.app.NotificationManager.Policy getConsolidatedNotificationPolicy(); method public final int getCurrentInterruptionFilter(); method public int getImportance(); method public android.app.NotificationChannel getNotificationChannel(String); @@ -48214,7 +48214,6 @@ package android.telephony { method @Deprecated public String iccTransmitApduBasicChannel(int, int, int, int, int, String); method @Deprecated public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String); method public boolean isConcurrentVoiceAndDataSupported(); - method public boolean isDataCapable(); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean isDataEnabled(); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataRoamingEnabled(); method public boolean isEmergencyNumber(@NonNull String); diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 713e92354fb4..1cbe1508e6bb 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -398,6 +398,8 @@ message Atom { 256 [(module) = "framework"]; DisplayJankReported display_jank_reported = 257; AppStandbyBucketChanged app_standby_bucket_changed = 258 [(module) = "framework"]; + SharesheetStarted sharesheet_started = 259 [(module) = "framework"]; + RankingSelected ranking_selected = 260 [(module) = "framework"]; SdkExtensionStatus sdk_extension_status = 354; } @@ -8914,3 +8916,64 @@ message AppStandbyBucketChanged { // UsageStatsManager.java. optional int32 sub_reason = 5; } + +/** +* Reports a started sharesheet transaction. +* +* Logged from: +* frameworks/base/core/java/com/android/internal/app/ChooserActivity.java +*/ +message SharesheetStarted { + // The event_id (as for UiEventReported). + optional int32 event_id = 1; + // The calling app's package name. + optional string package_name = 2; + // An identifier to tie together multiple logs relating to the same share event + optional int32 instance_id = 3; + // The mime type of the share + optional string mime_type = 4; + // The number of direct targets the calling app is providing that will be shown. + optional int32 num_app_provided_direct_targets = 5; + // The number of app targets the calling app is providing that will be shown. + optional int32 num_app_provided_app_targets = 6; + // True if the share originates from the workprofile + optional bool is_workprofile = 7; + + enum SharesheetPreviewType { // Constants from ChooserActivity.java + CONTENT_PREVIEW_IMAGE = 1; // The preview shown in the sharesheet is an image. + CONTENT_PREVIEW_FILE = 2; // The preview shown in the sharesheet is a file. + CONTENT_PREVIEW_TEXT = 3; // The preview shown in the sharesheet is text. + } + // How the sharesheet preview is presented. + optional SharesheetPreviewType previewType = 8; + + enum ResolverActivityIntent { // Intents handled by ResolverActivity.java + INTENT_DEFAULT = 0; + INTENT_ACTION_VIEW = 1; + INTENT_ACTION_EDIT = 2; + INTENT_ACTION_SEND = 3; + INTENT_ACTION_SENDTO = 4; + INTENT_ACTION_SEND_MULTIPLE = 5; + INTENT_ACTION_IMAGE_CAPTURE = 6; + INTENT_ACTION_MAIN = 7; + } + // The intent being processed (only SEND and SEND_MULTIPLE are system sharesheet) + optional ResolverActivityIntent intentType = 9; +} + +/** + * Reports a ranking selection event. + * + * Logged from: + * frameworks/base/core/java/com/android/internal/app/ChooserActivity.java (sharesheet) + */ +message RankingSelected { + // The event_id (as for UiEventReported). + optional int32 event_id = 1; + // The relevant app's package name (can be source or picked package). + optional string package_name = 2; + // An identifier to tie together multiple logs relating to the same share event. + optional int32 instance_id = 3; + // Which of the ranked targets got picked, default starting position 0. + optional int32 position_picked = 4; +} diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 1a92b758ab9f..6cf9b2e212ee 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1315,7 +1315,8 @@ public class ActivityManager { /** * @return The in-memory or loaded icon that represents the current state of this task. - * @deprecated This call is no longer supported. + * @deprecated This call is no longer supported. The caller should keep track of any icons + * it sets for the task descriptions internally. */ @Deprecated public Bitmap getIcon() { diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index cbbdf639d036..811b9c082be2 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -1015,14 +1015,15 @@ public class NotificationManager { } /** + * Returns the currently applied notification policy. + * * <p> - * Gets the currently applied notification policy. If {@link #getCurrentInterruptionFilter} - * is equal to {@link #INTERRUPTION_FILTER_ALL}, then the consolidated notification policy - * will match the default notification policy returned by {@link #getNotificationPolicy}. + * If {@link #getCurrentInterruptionFilter} is equal to {@link #INTERRUPTION_FILTER_ALL}, + * then the consolidated notification policy will match the default notification policy + * returned by {@link #getNotificationPolicy}. * </p> */ - @Nullable - public NotificationManager.Policy getConsolidatedNotificationPolicy() { + public @NonNull NotificationManager.Policy getConsolidatedNotificationPolicy() { INotificationManager service = getService(); try { return service.getConsolidatedNotificationPolicy(); diff --git a/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java b/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java index 79eb9f6e749c..2437af26770b 100644 --- a/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java +++ b/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java @@ -213,15 +213,24 @@ public class ApkSignatureSchemeV3Verifier { verityDigest, apk.length(), signatureInfo); } - if (contentDigests.containsKey(CONTENT_DIGEST_CHUNKED_SHA512)) { - result.digest = contentDigests.get(CONTENT_DIGEST_CHUNKED_SHA512); - } else if (contentDigests.containsKey(CONTENT_DIGEST_CHUNKED_SHA256)) { - result.digest = contentDigests.get(CONTENT_DIGEST_CHUNKED_SHA256); - } + result.digest = pickBestV3DigestForV4(contentDigests); return result; } + // Keep in sync with pickBestV3DigestForV4 in apksigner.V3SchemeVerifier. + private static byte[] pickBestV3DigestForV4(Map<Integer, byte[]> contentDigests) { + final int[] orderedContentDigestTypes = + {CONTENT_DIGEST_CHUNKED_SHA512, CONTENT_DIGEST_VERITY_CHUNKED_SHA256, + CONTENT_DIGEST_CHUNKED_SHA256}; + for (int contentDigestType : orderedContentDigestTypes) { + if (contentDigests.containsKey(contentDigestType)) { + return contentDigests.get(contentDigestType); + } + } + return null; + } + private static VerifiedSigner verifySigner( ByteBuffer signerBlock, Map<Integer, byte[]> contentDigests, diff --git a/packages/SystemUI/res/layout/global_screenshot.xml b/packages/SystemUI/res/layout/global_screenshot.xml index a76f96115fa9..d506e7e8e700 100644 --- a/packages/SystemUI/res/layout/global_screenshot.xml +++ b/packages/SystemUI/res/layout/global_screenshot.xml @@ -58,13 +58,15 @@ android:elevation="@dimen/screenshot_preview_elevation" android:visibility="gone" android:background="@drawable/screenshot_rounded_corners" - android:adjustViewBounds="true"/> + android:adjustViewBounds="true" + android:contentDescription="@string/screenshot_preview_description"/> <FrameLayout android:id="@+id/global_screenshot_dismiss_button" android:layout_width="@dimen/screenshot_dismiss_button_tappable_size" android:layout_height="@dimen/screenshot_dismiss_button_tappable_size" android:elevation="7dp" - android:visibility="gone"> + android:visibility="gone" + android:contentDescription="@string/screenshot_dismiss_ui_description"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 35430733a118..93bafdbee91d 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -233,6 +233,10 @@ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] --> <string name="screenshot_failed_to_capture_text">Taking screenshots isn\'t allowed by the app or your organization</string> + <!-- Content description indicating that tapping a button will dismiss the screenshots UI [CHAR LIMIT=NONE] --> + <string name="screenshot_dismiss_ui_description">Dismiss screenshot</string> + <!-- Content description indicating that tapping will open an app to view/edit the screenshot. [CHAR LIMIT=NONE] --> + <string name="screenshot_preview_description">Open screenshot</string> <!-- Notification title displayed for screen recording [CHAR LIMIT=50]--> <string name="screenrecord_name">Screen Recorder</string> diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index f45e66e79c76..2853956d0a79 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -141,6 +141,7 @@ public class ZenModeHelper { updateDefaultAutomaticRuleNames(); mConfig = mDefaultConfig.copy(); mConfigs.put(UserHandle.USER_SYSTEM, mConfig); + mConsolidatedPolicy = mConfig.toNotificationPolicy(); mSettingsObserver = new SettingsObserver(mHandler); mSettingsObserver.observe(); @@ -821,9 +822,6 @@ public class ZenModeHelper { * @return a copy of the zen mode consolidated policy */ public Policy getConsolidatedNotificationPolicy() { - if (mConsolidatedPolicy == null) { - return null; - } return mConsolidatedPolicy.copy(); } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index e559c2ab0779..27723efd34da 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -11179,6 +11179,8 @@ public class TelephonyManager { * PackageManager.FEATURE_TELEPHONY system feature, which is available * on any device with a telephony radio, even if the device is * voice-only. + * + * @hide */ public boolean isDataCapable() { if (mContext == null) return true; |